将NSDictionary从父视图传递到子视图(最新的xcode)

时间:2012-01-26 05:57:17

标签: ios xcode uitableview storyboard

我只做了2天的客观c,所以如果这是一个可怕的问题,我道歉。所以基本上我正在使用故事板来制作iPhone应用程序。在我的一个视图中,基于通过http请求检索以json格式显示的内容来动态创建单元格。当选择其中一个单元格时,需要显示一个视图,每个单元格的视图相同(不是关于Segue的问题)。此视图将依赖于选择了哪个单元格(不仅如此,还有来自json的未显示给用户的其他信息)。因此,我需要将NSDictionary传递给子视图。我确信这是微不足道的,但我找不到任何解决方案。提前感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

就像Tim说的那样,你为你的字典对象声明了一个属性,然后在父VC的代码文件(.m文件)中,你:

#import "ChildViewController.h" // Replace that with the name of the class for your child VC

并在prepareForSeque方法中执行此操作:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    // Make sure we are dealing with the proper Segue
    if ([segue.identifier isEqualToString:@"mySegueID"]) // ALWAYS use identifiers for your Segues
    {
        // Setup the destination ViewController
        ChildViewController *cvc = segue.destinationViewController;


        // Set the dictionary object property on the ChildViewController
        cvc.myDict = TheDictionaryObjectYouWantToPass;
    }
}

这是使用故事板传递对象的方法。当你有一个Segue时会被调用的方法就是这个prepareForSegue方法。这是您传递对象的地方,并执行与设置目标视图控制器相关的任何操作

答案 1 :(得分:-1)

您可以使用属性。属性是类的外部暴露值。它们可以设置或读取。定义属性时,Xcode会合成setter和getter - 也就是说,它会使用提供的策略自动在类上创建-(type)variablesetVariable:(type)方法:retain意味着类将保留它 - 而不是assign,而类没有挂在它上面,而nonatomic意味着它将在适当的位置更新它,而不是将新值复制到内存的另一部分并仅更新引用完成后。 nonatomic通常用于线程安全性较少的应用程序,因为它比atomic快,但它不是线程安全的。

在您孩子视图的标题中:

@property (nonatomic, retain) NSDictionary* myDict;

在父视图中显示子视图的方法

// ... code which allocs child view here...
[childView setMyDict:theDict];
// ... code which presents child view here...