添加具有UINavigationController的UITableViewController时AddChildViewController问题

时间:2014-01-10 21:46:44

标签: ios objective-c uinavigationcontroller childviewcontroller

我有这段代码:

navtablecontroller = [[UITableViewController alloc] init];
navtablecontroller.tableView.delegate = self;
navtablecontroller.tableView.dataSource = self;

CGRect frame = self.view.frame;
frame.origin.y = frame.origin.y + 83.0;
frame.size.height = 200.0;
navtablecontroller.view.frame = frame;

navtablecontroller.title = @"mynameasdasd";
[self addChildViewController:navtablecontroller];
[self.view addSubview:navtablecontroller.view];
[navtablecontroller didMoveToParentViewController:self];

这完全在屏幕上创建了一个UITableView,与所提到的帧完全一样。

现在我尝试添加一个UINavigationController并将此UITableViewController作为其RootViewController。

UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:navtablecontroller];
nav.navigationBar.translucent = NO;

然后将其添加为我的childViewController:

[self addChildViewController:nav];
[self.view addSubview:nav.view];
[nav didMoveToParentViewController:self];

不幸的是,代替在代码中提到的小框架中创建UINavigationController,整个屏幕被UINavigationController取代。

我只需要那个小框架就可以将UINavigationController与UITableView作为rootviewcontroller,而不是整个屏幕。任何sugestions?

1 个答案:

答案 0 :(得分:0)

得到了解决方案。必须将UINavigationController的框架设置为UITableViewController的框架。

nav.view.frame = frame;

其中frame是UITableViewController的框架。