【问题标题】:Not able to push sub view to navigationController无法将子视图推送到 navigationController
【发布时间】:2012-05-05 03:04:51
【问题描述】:

试图将新控制器推入导航控制器,不知道为什么它不工作。 1)我检查了 secondViewController 的实例也不起作用。 2)。尝试后缀“.xib”,也不起作用。 3) 试过 bundle:nil 也不行。

我正在使用 ARC。有人能指出这里有什么问题吗?

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSLog(@" YOU SELECTED ROW ..");
    secondViewController *secController = [[secondViewController alloc] initWithNibName:@"secondViewController.xib" bundle:[NSBundle mainBundle]];
    NSLog (@"View Controller %@ ", secController);
        [self.navigationController pushViewController:secController animated:YES];
    }

【问题讨论】:

  • 您为什么使用 ARC 而不是 Storyboard?这可能会解决你的问题。我们还可以获得更多代码,例如您的 UINavigationController 实例化以及您的意思是它不起作用吗?是不是崩溃了,一片空白,什么都不做? secController 的 NSLog 显示了什么?
  • 您是否在 MainWindow.xib 文件中实现了 UINavigationController?

标签: iphone objective-c ios5


【解决方案1】:

我编辑你的代码试试这个。

 -(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSLog(@" YOU SELECTED ROW ..");
    secondViewController *secController = [[secondViewController alloc] initWithNibName:@"secondViewController" bundle:nil];
    NSLog (@"View Controller %@ ", secController);
    [self.navigationController pushViewController:secController animated:YES];
}

【讨论】:

  • 并且还要检查您的第二个视图控制器 xib 的文件所有者。在 xib 中不应存在任何警告连接。
【解决方案2】:

如果 nib 位于主包中,则无需传递包。传入 nil 会起作用,所以改变这个:

[[secondViewController alloc] initWithNibName:@"secondViewController.xib" bundle:[NSBundle mainBundle]];

到这里:

[[secondViewController alloc] initWithNibName:@"secondViewController" bundle:nil];

您还可以利用 UIKit 将查找与类同名的 nib 并将 nil 传递给 nib 名称这一事实。

【讨论】:

    【解决方案3】:

    您是否集成了导航控制器?检查 self.NaviagationController 是否在内存中?可能是 0*0

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-23
      • 1970-01-01
      • 1970-01-01
      • 2011-12-20
      • 1970-01-01
      • 1970-01-01
      • 2013-07-28
      • 2012-02-28
      相关资源
      最近更新 更多