我想用NavigationBar和TableView创建子视图。在导航栏中应该是一个可以编辑tableView的按钮。 navigationBar和TableView显示在子视图中,但barButtonItem没有显示。我的代码中是否有错误,或者是否存在问题,因为它是子视图?
UIView *tagView = [[UIView alloc] initWithFrame:CGRectMake(0, 325, screenSize.size.width, 200)];
tableView = [[UITableView alloc] initWithFrame:CGRectMake(-10, 40, screenSize.size.width, 150) style:UITableViewStylePlain];
tableView.delegate = self;
tableView.dataSource = self;
[tagView addSubview:tableView];
UINavigationBar *navigationBar = [[UINavigationBar alloc] initWithFrame:CGRectMake(0, 0, tagView.frame.size.width, 45)];
self.navigationItem.leftBarButtonItem = self.editButtonItem;
[tagView addSubview:navigationBar];
[self.view addSubview:tagInstruction];
[self.view addSubview:tagView];
答案 0 :(得分:1)
self.navigationItem是指navigationController导航项,你没有任何导航控制器,你只有自定义NavigationBar,因此无法正常工作。
要解决此问题,您必须创建自己的UIButton并添加到NavigationBar的子视图中。
答案 1 :(得分:0)
navigationItem表示父级导航栏中的视图控制器,而不是您在此处构建的navigationBar。将Button放入导航栏。
答案 2 :(得分:0)
如果我需要一个干净的navigationBar,我总是把我的UIViewControllers放在UINavigationController中。它不会受到伤害,您可以稍后添加导航功能。然后,您可以使用self.navigationItem添加UIBarButtonItem
答案 3 :(得分:0)
像Sven所说,self.navigationItem引用UINavigationBar的UINavigationItem,它属于视图控制器的父UINavigationController。如果你想在你刚刚分配的导航栏中设置你的按钮,试试这个:
UINavigationItem * navigationItem = [[UINavigationItem alloc] init];
navigationItem.leftBarButtonItem = self.editButtonItem;
[navigationBar setItems:@[navigationItem]];