以编程方式在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很有用。
我希望这些文档和教程的一些内容会强调给我:
-
当你创build
UINavigationController
你可以免费得到一个UIView和UINavigationBar(也就是说,你不需要单独添加它们,并找出如何将它们连接在一起)。 -
将
myUINavigationController.view
属性添加为“main”视图,然后将UIViewController
推送到UINavigationController上,它们将自动显示在myUINavigationController.view
UIView中可见的myUINavigationController.view
。 -
当你把一个
UIViewController
拖到一个UINavigationController
,UIViewController.navigationController
被填充了。如果你还没有将视图推到导航控制器上,我猜这个属性是空的。 -
以编程方式将button添加到
UINavigationBar
的时间/地点不是在构buildUINavigationController
时间和位置,而是在您将它们加载到UINavigationController
时加载的单个UIViewController
。 -
我只需要在
UINavigationController
的UINavigationBar
中添加一个“Done”button,并将其放到UINavigationController
的第一个UIViewController
的viewDidLoad
方法中。 我在第一个视图顶部的任何UIViewController
自动有一个“后退”button在导航到UIViewController
。 -
如果你在
UINavigationController
的堆栈上设置你的UIViewController
的title
属性。UINavigationBar
的标题将是你的观点的标题。 以及任何“后退”button将自动命名您返回的视图,而不是一般说“回”。
请访问“ 如何以编程方式添加UINavigationController ”
请访问上面的链接并获取有关UINavigationController的所有信息。
UINavigationController是UIViewController的子类,但与UIViewController不同,它通常不是为了inheritance子类。 这是因为导航控制器本身很less被定制超出导航栏的视觉效果。 UINavigationController的一个实例可以用代码或XIB文件相对容易地创build。