【问题标题】:Data is not being passed to detail view controller in storyboards数据未传递到情节提要中的详细视图控制器
【发布时间】:2016-02-15 11:12:50
【问题描述】:

所以我知道这个问题之前已经回答过了,但我觉得我的问题只是我忽略的一些小细节。我正在尝试使用情节提要在我的视图控制器之间传递数据,但是一旦我推动我在另一端就什么也得不到。

以下是我的序列推送方法中的内容:

if ([segue.identifier isEqualToString:@"DetailPush"]) {
    NSMutableDictionary *selectedObject = [self.userArray objectAtIndex:self.selectedIndexPath];
    PhotoStreamDetailViewController *destController = [segue destinationViewController];
    destController.label.text = selectedObject[kImage][kURL];
}
  • 我设置了一个断点以确保我的对象不是“nil”(在传递之前有数据)。
  • 我创建了一个从情节提要到详细视图控制器的 IBOutlet

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

【问题讨论】:

    标签: ios objective-c storyboard


    【解决方案1】:

    在调用 prepareForSegue 时未设置 Iboutlets,因此在您的代码中您试图设置等于 nil 的值。创建一个公共属性来存储您的字符串,然后在 viewDidLoad 中设置您的标签。

    【讨论】:

      【解决方案2】:

      直到viewDidLoad 才会设置 IBOutlets。您需要通过视图控制器上公开的NSString 传递数据,然后将其设置为viewDidLoad

      你可以看到更深入的解释here.

      【讨论】:

        【解决方案3】:

        您不能将标签文本直接从 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;
        

        【讨论】:

        • 好的,有道理。那么新创建的字符串必须是“强”、“弱”还是?
        • 只要@property(非原子)就可以了
        • 默认情况下是“强”或“保留”
        【解决方案4】:

        你也可以试试这个:

            PhotoStreamDetailViewController *destController = [segue destinationViewController];
            [destController loadView];
            destController.label.text = selectedObject[kImage][kURL];
        

        这样你就避免了 NSString 属性来传递文本。

        【讨论】:

          猜你喜欢
          • 2014-09-12
          • 1970-01-01
          • 2012-06-02
          • 1970-01-01
          • 2012-07-17
          • 1970-01-01
          • 2012-12-18
          • 2014-08-12
          • 1970-01-01
          相关资源
          最近更新 更多