MVC将数据从一个ViewController传递到另一个ViewController失败(所有步骤都已完成)

时间:2015-12-26 07:54:13

标签: ios objective-c

今天我使用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);
}

但我一无所获,我不知道我哪里错了,怎么做对了?非常感谢。

2 个答案:

答案 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
}];