【问题标题】:iOS storyboards instantiate viewController and IBActioniOS 故事板实例化 viewController 和 IBAction
【发布时间】:2012-01-17 03:14:57
【问题描述】:

我可能很快就会发疯。

原因如下: - 我开始使用带有故事板的单视图应用程序项目。然后我在情节提要中为我的 viewController 设置视图控制器类名。 - 下一步我在 AppDelegate 方法中为这个 viewController 创建了一个指针 ...didFinishLaunchingWithOpt... 并通过调用 [myStoryboards instantiate...] 来填充它。它工作得很好,因为我可以调用像 [vc1 setMyName] 这样的方法,它像 self.myName = @"Johnny"; - 但它来了。当我创建与按钮连接的 IBAction 方法时,此方法对“约翰尼”一无所知。这是因为我在另一个例子中。当我检查“self”的地址时,它是另一个......

为什么为什么为什么???请帮助,我怎样才能使用相同的对象 - 故事板在 AppDelegate 中实例化的对象和“界面构建器”中的故事板实例化的对象。

谢谢。


哦,天哪。我觉得我真的低估了... 当我们谈论从情节提要中获取其他视图控制器的指针时......

我通过调用rootViewContr 获得了initialViewController ...另一个与segue(模态)连接的UITableView。在 rootViewController 上获取数据,我想在列表中的另一个(UITableView)上显示它们。所以我调用 segue (performSegueWithIdentifier),显示了另一个控制器,但列表很清楚。因为我调用的方法是使用为空的 tableView 变量:/ 因为,我在另一个对象中。那是因为我将该方法称为故事板实例化......我怎样才能获得与我在故事板中工作的完全相同的 viewController。这让我很困惑:/

我阅读了一些关于 prepareForSegue 并通过destinationViewController 获取指针的内容,但这并不是我真正想要的。在调用 segue 方法并显示 viewController 之前我需要指针...

谢谢。

【问题讨论】:

    标签: ios storyboard


    【解决方案1】:

    如果您在情节提要中正确设置了初始视图控制器,则无需将其分配给 -applicationDidFinishLaunchingWithOptions: 中的 windows rootViewController 属性,因为这是自动为您完成的。听起来您正在创建第二个实例。要通过情节提要访问原始实例设置,只需在 -applicationDidFinishLaunchingWithOptions:

    中执行此操作
    InitialViewController *viewController = (InitialViewController *)self.window.rootViewController;
    viewController.myName = @"Johnny";
    

    【讨论】:

    • 太棒了!谢谢你。而已。我知道我正在处理二审。但不知道如何避免。好的。使用新事实的类似问题。当我有两个视图控制器时,情况如何。有没有机会按照你描述的方式得到指针?
    • 只有在故事板中标记为“初始视图控制器”的视图控制器才会在发送-applicationDidFinishLaunchingWithOptions: 时被实例化。如果您需要引用其他视图控制器,则需要使用 UIStoryboard 上的方法实例化它们。
    • 是的。我知道了。它有效!非常感谢你
    • 不客气!没有什么比一个大的绿色复选标记更能表达感谢了……;)
    猜你喜欢
    • 1970-01-01
    • 2018-01-25
    • 2014-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-19
    • 2015-03-26
    • 1970-01-01
    相关资源
    最近更新 更多