【问题标题】:Storyboard - navigation controller in viewcontrollerStoryboard - viewcontroller 中的导航控制器
【发布时间】:2012-07-10 18:24:28
【问题描述】:

我是故事板的新手,在我的故事板中,我在视图控制器上有一个按钮。单击按钮时,我试图将导航控制器视图添加为子视图,但当我尝试使用导航控制器推送时,应用程序崩溃了。请帮我解决这个问题。我已上传源代码,请从以下网址下载

http://www.darrr.com/skyparts/test.zip

【问题讨论】:

  • 我建议在您的帖子中添加相关代码,而不是要求用户下载您的源代码。我怀疑很多人会愿意从第三方网站打开一个 zip 文件,包括我自己。此外,我们可以使用有关您遇到的崩溃的更多信息。您的控制台应该会吐出一些信息,因此请将其粘贴到您的问题中。

标签: ios uinavigationcontroller storyboard


【解决方案1】:

情节提要的最大优点是可以在 Interface Builder 中完成很多工作。因此,要使您的代码正常工作,您接下来应该执行以下操作:

  1. 打开故事板并进行以下更改:
    1. 在“viewCtrl”按钮上单击右键,然后在弹出菜单中删除对方法-(IBAction)bttnTapped:(id)sender 的引用。而不是在按钮触摸上调用操作方法,您应该通过从“viewCtrl”按钮到导航控制器的 ctrl 拖动来添加一个 segue,然后选择“模态”类型的 segue。
    2. 选择导航控制器并打开属性检查器。然后在“顶部栏”字段中选择导航栏。
    3. 在“Ctrl1”视图中单击“ctrl1”按钮上的右键并在弹出菜单中删除对方法-(IBAction)bttnTapped:(id)sender的引用。
    4. 将视图控制器从对象库添加到情节提要。然后在身份检查器的“类”字段中输入“ctrl2”。之后,从“ctrl1”按钮按住 ctrl 并拖动到“Ctrl2”控制器视图,然后选择“Push”类型的 segue。

Interface Builder 中的故事板视图应如下所示: storyboard view

2.进入ViewController.h和.m,删除方法- (IBAction)bttnTapped:(id)sender。

3.进入ctrl1.h和.m,删除方法- (IBAction)bttnTapped:(id)sender。

代码应该可以工作。但我建议将方法 - (void)viewDidLoad 和 - (void)viewDidUnload 放到 ctrl1.m 后面。

如果你想在按钮被触摸但视图加载之前运行一些代码,你应该重写方法- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-29
    • 1970-01-01
    • 1970-01-01
    • 2013-04-14
    • 2012-02-04
    • 1970-01-01
    相关资源
    最近更新 更多