数据没有被传递到故事板中的详细视图控制器
问题描述:
所以我知道这个问题已经回答过,但我觉得我的问题只是我忽略的一些小细节。我试图在使用故事板的视图控制器之间传递数据,但是一旦我推动,我就不会在另一端获得任何东西。数据没有被传递到故事板中的详细视图控制器
下面是我在我的塞克推法:
if ([segue.identifier isEqualToString:@"DetailPush"]) {
NSMutableDictionary *selectedObject = [self.userArray objectAtIndex:self.selectedIndexPath];
PhotoStreamDetailViewController *destController = [segue destinationViewController];
destController.label.text = selectedObject[kImage][kURL];
}
- 我已经设置断点,以确保我的目标不是“零”(有前传数据)。
- 我创建一个IBOutlet从故事板到详细信息视图控制器
或许有,我需要检查其他的东西?
答
不能将标签文本从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;
答
当prepareForSegue被调用时,Iboutlet没有被设置,所以在你的代码中你试图设置等于零的东西。创建一个公共属性来存储你的字符串,然后在viewDidLoad中设置你的标签。
答
你也可以试试这个:
PhotoStreamDetailViewController *destController = [segue destinationViewController];
[destController loadView];
destController.label.text = selectedObject[kImage][kURL];
这样你可以避免的NSString属性传递文本。
好的,这是有道理的。新创建的字符串也必须是“强”,“弱”还是? –
只是@property(非原子)将使它 –
默认情况下,'强'或'保留' –