所以我知道这个问题之前已经得到了回答,但我觉得我的问题只是我忽略的一些细节。我正在尝试使用故事板在我的视图控制器之间传递数据,但是一旦我推动我在另一端没有得到任何东西。
以下是我的seque推送方法中的内容:
if ([segue.identifier isEqualToString:@"DetailPush"]) {
NSMutableDictionary *selectedObject = [self.userArray objectAtIndex:self.selectedIndexPath];
PhotoStreamDetailViewController *destController = [segue destinationViewController];
destController.label.text = selectedObject[kImage][kURL];
}
也许还有其他我需要检查的事情?
答案 0 :(得分:2)
在调用prepareForSegue时未设置Iboutlet,因此在您的代码中,您尝试设置等于nil的内容。创建一个公共属性来存储您的字符串,然后在viewDidLoad中设置您的标签。
答案 1 :(得分:2)
IBOutlets不会被设置到viewDidLoad
。您希望通过视图控制器上公开的NSString
传递数据,然后在viewDidLoad
上进行设置。
您可以看到更深入的解释here.
答案 2 :(得分:1)
您无法直接从ViewControllerA到ViewControllerB设置标签文本。
在ViewControllerB接口中创建NSString属性:
@property (nonatomic) NSString *labelText;
然后将此字符串从ViewControllerA传递到ViewControllerB:
PhotoStreamDetailViewController *destController = [segue destinationViewController];
destController.labelText = selectedObject[kImage][kURL];
在ViewControllerB中,即viewDidLoad:
label.text = self.labelText;
答案 3 :(得分:0)
你也可以试试这个:
PhotoStreamDetailViewController *destController = [segue destinationViewController];
[destController loadView];
destController.label.text = selectedObject[kImage][kURL];
这样就可以避免NSString属性传递文本。