ios - 无法在 viewDidLoad 方法中获取传递的数据

标签 ios objective-c uiviewcontroller

我正在尝试像这样将一些数据传递给我的 View Controller 类:

MyViewController *vc = [[MyViewController alloc] init];
vc.myProperty = dataToBePassed;
[self.navigationController pushViewController:vc animated:YES];

我需要在 viewDidLoad 中进行一些 View 配置,但似乎 viewDidload 调用早于属性分配。

然后在 MyViewController 实现中:

- (void)viewDidLoad
{
    [super viewDidLoad];
    NSLog(@"%@", self.myProperty); // Here i get myProperty = nil
}

- (void)viewWillAppear
{
    [super viewWillAppear];
    NSLog(@"%@", self.myProperty); // Here i get myProperty = dataToBePassed but it's to late
}

如何在不实现单例或委托(delegate)模式的情况下在 viewDidLoad 方法中获取传递的数据?

最佳答案

尝试这样做

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:
                            @"MainStoryboard" bundle:[NSBundle mainBundle]];

MyViewController *vc = [storyboard  instantiateViewControllerWithIdentifier:@"storyboardIdentifier"];
vc.myProperty = dataToBePassed;
[self.navigationController pushViewController:vc animated:YES];

您必须首先在 View Controller 的 Storyboard中设置 Storyboard标识符。

关于ios - 无法在 viewDidLoad 方法中获取传递的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38356397/

相关文章:

ios - 多个用户使用同一设备时处理苹果推送通知的最佳实践

ios - 为 UICollectionViewFlowLayout 提供我自己的初始化程序

ios - MKPinAnnotationView 未居中

objective-c - 返回不可变对象(immutable对象)的首选方式

ios - 关闭 UIViewController 而不关闭其上的警报

ios - Sprite-Kit 捏合缩放问题 UIPinchGestureRecognizer

ios - 如何在 KMM 项目中处理来自 PHPickerViewController 的回调?

objective-c - NSSet 如何存储在内存中并使它们更高效

iOS 快速 : Deint a child ViewController

iphone - 隐藏第二个 View Controller 并导航到第三个 View Controller