【问题标题】:passing data from FirstViewController to FrontViewController of SWRevealViewController将数据从 FirstViewController 传递到 SWRevealViewController 的 FrontViewController
【发布时间】:2014-09-23 07:25:04
【问题描述】:

对不起我的英语不好

我需要将数据从我的第一个视图控制器传递到 SWRevealViewController 的前视图控制器

在我的第一个视图控制器中,我执行此代码

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([segue.identifier isEqualToString:@"menu"]) {
        SWRevealViewController *sw = (SWRevealViewController *) segue.destinationViewController;

        // error is here i get nav with nil
        UINavigationController *nav = (UINavigationController *)sw.frontViewController;
        FrontViewController *home = (FrontViewController *) nav.topViewController;
        home.passed_student = selected_student;



}
}

【问题讨论】:

  • UINavigationController *nav = (UINavigationController *)sw.frontViewController;这里你的 frontViewController 是 SWRevealViewController 的一个属性?
  • 是的,它与名为 FronViewController 的类不同
  • 我认为你的属性 frontViewController 在它被初始化为 SWRevealViewController 内的 UINavigationController 之前被使用。

标签: ios objective-c parameter-passing swrevealviewcontroller


【解决方案1】:

在 storyBord 中,在使用 segue 呈现或以其他方式访问之前,不会创建对象(视图控制器),因此在您的代码中,您正在呈现 SWRevealViewController 但尝试访问不在内存中的 FrontViewController 对象。

所以首先你应该将你的 selected_student 传递给你的 SWRevealViewController 然后从这里传递给 FrontViewController 因为你可以在使用 segue 呈现它的过程中从这里访问 FrontViewController 的对象。这是最简单的方法。

【讨论】:

  • 我是 ios 新手,我该怎么做
  • 现在您正在从 FirstViewConroller 中呈现 SWRevealViewController 的对象,并且您想将 selected_student 的数据提前一步传递给 FrontViewController。为此,您将需要 FrontViewController 的对象,可以通过将 id 提供给 storyBoard 中的 FrontViewController 来访问它,然后使用该 id 在此处访问它。我会在几分钟内为您提供代码。
  • 我已经更新了答案。如果仍然无法正常工作,请告诉我。
  • 原因:'Storyboard () 不包含标识符为 'frontVC' 的视图控制器' 我更改为 'sw_front' 但它崩溃了,我应该在这里放什么标识符跨度>
猜你喜欢
  • 2014-06-06
  • 1970-01-01
  • 2015-03-19
  • 2016-09-02
  • 1970-01-01
  • 2018-03-01
  • 2017-09-27
  • 2016-02-26
  • 2016-07-24
相关资源
最近更新 更多