今天我使用MVC来构建相册。但是我无法从ViewControllerA中获取从ViewControllerA传递的数据,我在这里阅读这篇文章是链接(Passing Data between View Controllers),并检查我所做的所有步骤。
以下是ViewControllerA
中的代码:
PhotoViewController *photoVC = [[PhotoViewController alloc] initWithNibName:nil bundle:nil];
photoVC.images = images;
photoVC.index = index;
photoVC.view.backgroundColor = [UIColor lightGrayColor];
[self presentViewController:photoVC animated:YES completion:^{
// code
}];
以下是ViewControllerB
中的代码:
@interface PhotoViewController : UIViewController
@property (nonatomic ,retain) NSMutableArray *images;
@property (nonatomic, assign) NSInteger index;
@end
这里是.m文件
- (void)viewDidLoad {
[super viewDidLoad];
NSLog(@"%@", self.images);
}
但我一无所获,我不知道我哪里错了,怎么做对了?非常感谢。
答案 0 :(得分:1)
我认为您无法从{<1}}实例化<:p>
PhotoViewController
请改为:
PhotoViewController *photoVC = [[PhotoViewController alloc] initWithNibName:nil bundle:nil];
或者您应该将标识符传递给PhotoViewController *photoVC = [[PhotoViewController alloc] init];
,否则如何找出要加载的Nib文件?
修改强>
您应该将此代码部分放在动画完成块中。当您像往常一样传递数据时,nibName
未完全实例化。
UIViewController
编辑2: 原因是:
您指定的nib文件不会立即加载。它载入了 第一次访问视图控制器的视图。如果你想 加载nib文件后执行其他初始化 覆盖viewDidLoad方法并在那里执行任务。
答案 1 :(得分:0)
故事板在两个控制器和控制器运行之间相等。
PhotoViewController *photoVC = [[PhotoViewController alloc] initWithNibName:nil bundle:nil];
photoVC.images = images;
photoVC.index = index;
photoVC.view.backgroundColor = [UIColor lightGrayColor];
[self presentViewController:photoVC animated:YES completion:^{
// code
}];