数据未传递到情节提要中的详细视图控制器
Data is not being passed to detail view controller in storyboards
所以我知道这个问题之前已经有人回答过,但我觉得我的问题只是我忽略了一些小细节。我正在尝试使用情节提要在我的视图控制器之间传递数据,但是一旦我按下,我就不会在另一端得到任何东西。
这是我的后续推送方法:
if ([segue.identifier isEqualToString:@"DetailPush"]) {
NSMutableDictionary *selectedObject = [self.userArray objectAtIndex:self.selectedIndexPath];
PhotoStreamDetailViewController *destController = [segue destinationViewController];
destController.label.text = selectedObject[kImage][kURL];
}
- 我已经设置了一个断点以确保我的对象不是 'nil'(在传递之前有数据)。
- 我创建了一个从故事板到细节视图控制器的 IBOutlet
也许我还需要检查其他事项?
调用 prepareForSegue 时未设置 Iboutlet,因此在您的代码中您试图设置等于 nil 的值。创建一个 public 属性 来存储你的字符串,然后在 viewDidLoad 中设置你的标签。
您不能将标签文本直接从 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;
要到 viewDidLoad
才会设置 IBOutlets。您需要通过视图控制器上公开公开的 NSString
传递数据,然后将其设置为 viewDidLoad
。
你可以看到更深入的解释here.
你也可以试试这个:
PhotoStreamDetailViewController *destController = [segue destinationViewController];
[destController loadView];
destController.label.text = selectedObject[kImage][kURL];
这样可以避免 NSString 属性 传递文本。
所以我知道这个问题之前已经有人回答过,但我觉得我的问题只是我忽略了一些小细节。我正在尝试使用情节提要在我的视图控制器之间传递数据,但是一旦我按下,我就不会在另一端得到任何东西。
这是我的后续推送方法:
if ([segue.identifier isEqualToString:@"DetailPush"]) {
NSMutableDictionary *selectedObject = [self.userArray objectAtIndex:self.selectedIndexPath];
PhotoStreamDetailViewController *destController = [segue destinationViewController];
destController.label.text = selectedObject[kImage][kURL];
}
- 我已经设置了一个断点以确保我的对象不是 'nil'(在传递之前有数据)。
- 我创建了一个从故事板到细节视图控制器的 IBOutlet
也许我还需要检查其他事项?
调用 prepareForSegue 时未设置 Iboutlet,因此在您的代码中您试图设置等于 nil 的值。创建一个 public 属性 来存储你的字符串,然后在 viewDidLoad 中设置你的标签。
您不能将标签文本直接从 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;
要到 viewDidLoad
才会设置 IBOutlets。您需要通过视图控制器上公开公开的 NSString
传递数据,然后将其设置为 viewDidLoad
。
你可以看到更深入的解释here.
你也可以试试这个:
PhotoStreamDetailViewController *destController = [segue destinationViewController];
[destController loadView];
destController.label.text = selectedObject[kImage][kURL];
这样可以避免 NSString 属性 传递文本。