【问题标题】:Unable to pushViewController iOS无法 pushViewController iOS
【发布时间】:2013-11-11 02:24:07
【问题描述】:

我在我的应用程序中使用故事板,: 我的View 中有按钮,点击按钮我想导航到新的View

但是当我点击按钮时没有任何反应,

这是我的代码:

- (IBAction)JoinClicked:(id)sender{

    JoinWithViewController *detail_view_controller = [[JoinWithViewController alloc] initWithNibName:@"JoinWithViewController" bundle:nil];

    [self.navigationController pushViewController:detail_view_controller animated:YES];
}

我哪里做错了,请帮忙。

提前致谢。

【问题讨论】:

  • detail_view_controller 或 self.navigationController 是否为 nil?
  • 当我记录这个NSLog(@"self.navigationController=%@ ---- detail_view_controller=%@ ",self.navigationController,detail_view_controller);时,我得到了这样的输出,self.navigationController=(null) ---- detail_view_controller=<JoinWithViewController: 0xb814370>
  • 为什么你不执行segue

标签: ios iphone ipad uinavigationcontroller pushviewcontroller


【解决方案1】:

在身份检查器的故事板中设置视图控制器的故事板ID

参考你的故事板

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];

然后到你的控制器

YourController *vc = [storyboard instantiateViewControllerWithIdentifier:@"YourController"];// storyboardId

[self.navigationController pushViewController:vc animated:YES];

你也可以做segue并做

[self performSegueWithIdentifier:@"YourSegueIdentifier" sender:sender/nil];

【讨论】:

  • 显示不知道选择器instantiateViewControllerWithIdentifier的类方法
  • 做这个 JoinWithViewController *detail_view_controller = (JoinWithViewController *)[self.storyboard instantiateViewControllerWithIdentifier:@"StoryboardId];
  • JoinWithViewController.xib 文件
  • 它真的让你感到困惑,你正在使用故事板,然后你也在制作 xib 文件,并且你想要推送:当收藏夹视图不在导航控制器中时
  • 如果我不使用.xib 并且如果我想点击favoritesTab 上的按钮事件(如果favoritesTab 上有按钮)那么我将如何获得?
【解决方案2】:

使用这个:

- (IBAction)JoinClicked:(id)sender{

[self performSegueWithIdentifier: @"JoinWithIdentifier" sender: self]; 

}

并在 storyborad 中添加 segue,例如

【讨论】:

    【解决方案3】:

    在情节提要中为您的 push-segue 创建一个标识符。

    然后使用

    [self performSegueWithIdentifier:@"YourSegueIdentifier" sender:nil];
    

    在使用故事板时,您应该尽可能多地使用 segues 进行导航。

    【讨论】:

      【解决方案4】:

      您的代码看起来不错,请在 xib 或 storyboard 中验证您的 outlet 是否正确配置。

      编辑: 您正在使用情节提要并希望将 xib 文件推送到您的视图控制器上,如果我没记错的话,您可以在情节提要中拖动另一个视图控制器并将其命名为 JoinWithViewController 并在单击按钮时使用 segue 进行推送。这比您在这里尝试做的要容易得多。

      【讨论】:

      • 您可以使用以下代码加载 xib:[[NSBundle mainBundle] loadNibNamed:@"JoinWithViewController" owner:self options:nil];我怀疑这种方法是否可行,最好使用故事板。
      • 是的,我可以加载Old.xib,但在加载Old.xib后无法推送到新视图或新new.xib
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-24
      • 1970-01-01
      相关资源
      最近更新 更多