数据未传递到情节提要中的详细视图控制器

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

也许我还需要检查其他事项?

调用 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 属性 传递文本。