从NSMutableArray&获取数据将数据传递到故事板中的DetailView

时间:2012-11-08 00:11:15

标签: objective-c ios uitableview nsmutablearray uistoryboardsegue

我有一个像这样的plist文件

<array>

    <array>

        <dict>

            <key>name</key>

            <string>Ryan</string>

            <key>image</key>

            <string>088i.png</string>

            <key>webSiteURL</key>

            <string>http://www.ryan.com</string>

            <key>category</key>

            <string>Monday</string>

        </dict>

    </array>

    <array>

        <dict>


            <key>name</key>

            <string>Pinky</string>
            <key>image</key>

            <string>089i.png</string>

            <key>webSiteURL</key>

            <string>http://www.pinky.com</string>

            <key>category</key>

            <string>Sunday</string>


        </dict>

        <dict>


            <key>name</key>

            <string>Kitty</string>

            <key>image</key>

            <string>098i.png</string>

            <key>webSiteURL</key>

            <string>http://www.kitty.com</string>

            <key>category</key>

            <string>Sunday</string>


        </dict>

    </array>

</array>

这个plist将作为NSMutableArray加载到NSTableView,现在我想将数据传递给DetailView,如何实际获取特定数据?

我用

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    if ([[segue identifier] isEqualToString:@"TableToWebSegue"]) {
        NormalDetailView *detailViewController = [segue destinationViewController];

        detailViewController.webSiteURL = [[_cellContentList objectAtIndex:indexPath.row] objectForKey:@"webSiteURL"]
    } }

但是它说indexPath是错误的,应该是NSIndexPath,我把它改成NSIndexPath但它说.row是错误的......

这是我的第一个应用程序,我不知道如何在这种情况下获取数据,如果我想获取webSiteURL,该怎么做?如何将其传递给详细视图?

1 个答案:

答案 0 :(得分:0)

如果您的prepareForSegue方法位于您是主控制器的UITableViewController中,那么只需将此行添加到prepareForSegue方法中:

 NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];

然后,您可以像在帖子中一样使用indexPath.row。

编辑之后:为了回应你的评论,我看了你的项目,并且在NormalViewController的lis行发生了错误:

detailViewController.name = [[_cellContentList objectAtIndex:indexPath.row] objectForKey:@"name"];

问题是,[_cellContentList objectAtIndex:indexPath.row]是一个没有objectForKey:方法的NormalCategory对象。它有一个normalList属性,它本身有2个normalData对象,而这些对象又有一个“name”属性。我认为这是你想要的名称属性,但是哪一个?由于有2个normalData对象,您必须有一种方法来选择您想要的对象。在我看来,您的数据结构过于复杂和混乱(至少对我而言)。