IOS如何更改现有UI以使用新的导航控制器

时间:2011-01-07 11:03:30

标签: ios objective-c uinavigationcontroller

好的,我遇到了麻烦。

我使用名为MainView的UITableViewController自定义类启动了一个Application。

在界面构建器中,我修改了视图,以便顶部有一个文本框和一个按钮以及一个UITableView。连接数据源并委托给MainView类,并在所有代码中编程,使用文本字段作为搜索字段,将按钮作为搜索触发器,然后在适当的委托方法中编程以填充UITableView。这非常有效。

现在下一步是使用

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
能够显示带有与所选行相关的链接的webview的方法。所以阅读我看到我需要添加一个UINavigationController到混合(以获得工具栏和导航栏等..)。

现在我试过这个: 从“界面”构建器添加导航控制器,并连接到appdelegate和插座


#import 

@interface ComparateurAppDelegate : NSObject  {
    UIWindow *window;
    UINavigationController *navigationController;
}

@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) IBOutlet UINavigationController *navigationController;

@end

然后在实施中

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[window addSubview:navigationController.view]; [window makeKeyAndVisible]; }

这个发布好了,和以前一样,我没有我应该有的顶级栏。加上当我尝试在其中推送新视图时什么都不做。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    WebViewController *wvc = [[WebViewController alloc] initWithNibName:@"WebViewController.nib" bundle:nil];

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

[wvc release];
}

我知道代码正在运行,因为我记录了它。但什么也没发生。 WebViewController.nib是我创建的nib文件(现在为空),因此我用UIwebview填充它。

我此时的猜测是视图层次结构没有设置好。

所以我尝试了一些我记不太清楚的东西,并在我已经拥有的窗口顶部找到了工具栏,但所有内容都无法访问(如果工具栏是模态对话框而我无法使用底部一个,或者像透明视图,你可以看到第一个堆叠的窗口下面。 我也尝试在appDelegate中以编程方式创建UINavigation控制器,如此

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

[wvc release];
}

我得到的只是一个用于界面的空UITableView,而不是MainView.nib(其类被设置为MainView)。

TL; DR: 有一个正在运行的应用程序,想要添加详细视图,并且需要修改为UINavigationController但似乎无法找到正确的方法。

提前感谢,并为长篇文章感到抱歉。

1 个答案:

答案 0 :(得分:1)

尝试更改此内容:

UIViewController *rootController = [[MainView alloc]init];

对此:

UIViewController *rootController = [[MainView alloc]initWithNibName:@"MainView" bundle:nil];