我以编程方式创建了一个UITableViewController
类,该类显示了一个带有简单导航栏的表视图(尽管没有UINavigationController
,因为表视图层次结构没有更多级别)。
以下是相关代码:
- (void)viewWillAppear:(BOOL)animated {
UINavigationBar *navBar = [[UINavigationBar alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 320.0f, 44.0f)];
[self.tableView addSubview:navBar];
}
但是,导航栏会覆盖第一个表格视图单元格的大部分,并滚动整个视图。
如何在表格视图上方固定导航栏,并防止滚动代码?
答案 0 :(得分:1)
问题是您正在使用UITableViewController。切换到标准的UIViewController,添加tableview委托和数据源方法,将tableview指向这些方法,然后执行您想要执行的操作。你也可以在XIB中添加一个UIToolbar,如果你愿意的话也可以这样创建。
如果您真的需要导航栏,请使用NSNavigationView控制器。
答案 1 :(得分:0)
当您使用导航控制器时,它会为您处理此问题,但导航栏只是另一个子视图。解决方法是相对于导航栏构建表格视图。
self.tableView.frame = CGRectMake(0,myNavBar.frame.size.height, 320, self.view.frame.size.height-myNavBar.frame.size.height);
答案 2 :(得分:0)
将导航栏的半透明属性设置为NO:
self.navigationController.navigationBar.translucent = NO;
答案 3 :(得分:-1)
拥有数据层次结构并不能真正驱动您是否需要使用UINavigationController。有三个很好的理由继续使用UINavigationController。
答案 4 :(得分:-1)
此行为的解决方案是将UINavigationBar添加到父视图控制器的视图中:
[self.parentViewController.view addSubview:myNavBar];