【问题标题】:Transition from XIB to Storyboard with data使用数据从 XIB 过渡到 Storyboard
【发布时间】:2016-03-11 08:00:16
【问题描述】:

所以我找到了一个如何从 XIB 过渡到故事板的示例

NSString * storyboardName = @"CheckoutStoryboard";
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:storyboardName bundle: nil];
UIViewController * vc = [storyboard instantiateViewControllerWithIdentifier:@"Checkout"];
[self presentViewController:vc animated:YES completion:nil];

这很好用,然后如果我需要在故事板场景之间传输数据,我可以在第一个场景中使用此代码在 segues 之间传输数据。

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([segue.destinationViewController respondsToSelector:@selector(setMyData:)]) {
        [segue.destinationViewController performSelector:@selector(setMyData:)withObject:myObject];
    }
}

这是第二个

@property (nonatomic, strong) NSString *myData;

但是,我无法弄清楚如何从我的 XIB 转换到我的情节提要 WITH 数据。我的 XIB 上基本上有很多变量,我需要在我的情节提要上,然后传递。除了将数据从 XIB 传递到情节提要之外,我知道如何完成每一步。有什么想法吗?

【问题讨论】:

  • XIB 是你的 ViewController 吗?

标签: ios objective-c storyboard xib


【解决方案1】:

我无法为您提供任何真实的代码,但您没有在上面的代码中使用 segues。 在您提供的示例中,您正在创建要显示的 UIViewController 的实例,然后以模态方式呈现该视图控制器。

您只需直接从所需的视图控制器实例访问变量。

MyCustomUIViewControllerClass * vc = [storyboard instantiateViewControllerWithIdentifier:@"Checkout"]; vc.myData = <valueHere> [self presentViewController:vc animated:YES completion:nil];

【讨论】:

  • 好吧,我实例化控制器的原因是据我所知,从 XIB 到情节提要的唯一方法就是执行上述操作。当我尝试您建议的代码时,我会说 myData 未在 UIViewController 中定义。
  • 你要把它作为你的 ViewController 类。查看更新的答案
  • 这确实有道理,我已经更改了它,但是我仍然收到错误消息,即我的变量未在我的自定义控制器视图的上下文中定义。我对变量的定义是否正确? @property (nonatomic, strong) NSString *myData;
  • 我对 Objective-C 了解不多,所以我无法帮助您,但我的答案是在呈现之前将变量分配给实例化视图控制器的正确方法。
  • 我最终这样做了 [vc setValue: forKey:@"myData"];
猜你喜欢
  • 1970-01-01
  • 2013-08-26
  • 2015-03-28
  • 1970-01-01
  • 2015-04-29
  • 2016-12-10
  • 2011-12-09
  • 2017-10-20
  • 1970-01-01
相关资源
最近更新 更多