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