以编程方式在UIViewController中添加UINavigationController

我目前的观点如下:

@interface BlogViewController : UIViewController <UITableViewDelegate, UITableViewDataSource> { UITableView *mainTableView; } @property (nonatomic, retain) UITableView *mainTableView; 

正如你所看到的,它里面有一个UITableView,我加载了所有的数据。 但是,当我调用下面的函数:

 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { SingleBlogViewController *viewController = [[SingleBlogViewController alloc] init]; [self.navigationController pushViewController:viewController animated:YES]; //[self presentModalViewController:viewController animated:YES]; [viewController release]; } 

什么都没发生。 出于某种原因,我的UITableView里面我的UIViewController不推动视图。 这是因为它不是一个UITableViewController ? 我试图改变它,它仍然没有工作。

我在这里错过了什么?

我发现这篇博文的第一部分对于展示如何在没有Interface Builder的情况下以编程方式创build和使用UINavigationController很有用。

我希望这些文档和教程的一些内容会强调给我:

  • 当你创buildUINavigationController你可以免费得到一个UIView和UINavigationBar(也就是说,你不需要单独添加它们,并找出如何将它们连接在一起)。

  • myUINavigationController.view属性添加为“main”视图,然后将UIViewController推送到UINavigationController上,它们将自动显示在myUINavigationController.view UIView中可见的myUINavigationController.view

  • 当你把一个UIViewController拖到一个UINavigationControllerUIViewController.navigationController被填充了。如果你还没有将视图推到导航控制器上,我猜这个属性是空的。

  • 以编程方式将button添加到UINavigationBar的时间/地点不是在构buildUINavigationController时间和位置,而是在您将它们加载到UINavigationController时加载的单个UIViewController

  • 我只需要在UINavigationControllerUINavigationBar中添加一个“Done”button,并将其放到UINavigationController的第一个UIViewControllerviewDidLoad方法中。 我在第一个视图顶部的任何UIViewController自动有一个“后退”button在导航到UIViewController

  • 如果你在UINavigationController的堆栈上设置你的UIViewControllertitle属性。 UINavigationBar的标题将是你的观点的标题。 以及任何“后退”button将自动命名您返回的视图,而不是一般说“回”。

请访问“ 如何以编程方式添加UINavigationController ”

请访问上面的链接并获取有关UINavigationController的所有信息。

UINavigationController是UIViewController的子类,但与UIViewController不同,它通常不是为了inheritance子类。 这是因为导航控制器本身很less被定制超出导航栏的视觉效果。 UINavigationController的一个实例可以用代码或XIB文件相对容易地创build。