0

我已经为此苦苦挣扎了一段时间,在网上筛选了解决方案,但还没有设法到达那里,所以我想是时候问问你们这些了不起的人了。我有一个标签栏应用程序,我在其中尝试使用包含表格视图 ( TableViewController) 的导航控制器来根据按下的单元格切换到不同的视图。

当触摸表格视图中的一个单元格时,我SecondViewController已加载(这正在工作,因为我通过在viewDidLoad()方法中为背景着色来检查)但是界面(XIB)没有加载,因此窗口是空白的(或者在我的背景测试的情况下是彩色的)。窗口 ( SecondViewController) 应该包含一个UIScrollerView在直接访问视图时起作用的。我应该提到,所有视图控制器都包含在一个XIB文件中,并且该XIB文件包含标签栏控制器和 App Delegate 所需的空白窗口(窗口和tabBarController)。

这就是我从TableViewController.m( rootViewControllerof navigationController)切换视图的方式

SecondViewController *viewSecond = [SecondViewController alloc];
self.secondViewController = viewSecond;
[self.navigationController pushViewController:self.secondViewController animated:YES];

这是applicationDidFinishLaunchingWithOptions()appDelegate.m

// Set the tab bar controller as the window's root view controller and display.
self.window.rootViewController = self.tabBarController;
[self.window makeKeyAndVisible];
tabBarController.moreNavigationController.navigationBar.hidden = YES;  
return YES;

这实际上是一个旧项目的后续,所以我现在确定为什么XIB在模板标签栏应用程序中不需要空白窗口(如果这与问题有关)。我才刚刚开始 iOS 开发,所以如果我在任何地方含糊不清,我深表歉意。任何帮助将不胜感激。

4

1 回答 1

2

在你的TableViewController.m,你已经错过了init你的SecondViewController。只是调用alloc不会从笔尖加载。

所以
SecondViewController *viewSecond = [SecondViewController alloc];
改为
SecondViewController *viewSecond = [[SecondViewController alloc] init];

SecondViewController *viewSecond = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil];

于 2012-12-22T14:14:59.840 回答