6

我目前有一个视图设置如下:

@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?我试着把它改成那样,它仍然没有用。

我在这里错过了什么吗?

4

2 回答 2

26

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

我希望文档和教程能够向我强调的一些事情:

  • 当您创建时,UINavigationController您将免费获得 UIView 和 UINavigationBar(即您不需要单独添加它们并弄清楚如何将它们连接在一起)。

  • 您将myUINavigationController.view属性添加为“主”视图,然后将它们推送/弹出UIViewController到 UINavigationController 上,它们将自动在myUINavigationController.viewUIView 中显示为可见。

  • 当您将 a 推UIViewController到 a 上UINavigationController时, 会UIViewController.navigationController被填充。如果您没有将视图推到导航控制器上,我猜该属性是空的。

  • 以编程方式向 中添加按钮的时间/地点UINavigationBar不是您构建 的时间和地点UINavigationController,而是UIViewController当您按下UINavigationController.

  • 我只需要在UINavigationController第一个推到. 我推到第一个视图顶部的任何内容都会自动在 中具有“后退”按钮,以导航到被遮盖的.UINavigationBarviewDidLoadUIViewControllerUINavigationControllerUIViewControllerUIViewController

  • 如果您在将其放入堆栈之前设置了您的title属性。s 标题将是您的视图的标题。同样,任何“后退”按钮都会自动命名您要返回的视图,而不是一般地说“后退”。UIViewControllerUINavigationControllerUINavigationBar

于 2011-01-19T22:07:30.480 回答
-3

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

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

UINavigationController 是 UIViewController 的子类,但与 UIViewController 不同的是,它通常并不意味着您要继承子类。这是因为导航控制器本身很少被定制超出导航栏的视觉效果。UINavigationController 的实例可以相对容易地在代码或 XIB 文件中创建。

于 2011-12-06T09:06:05.577 回答