我有一个uisegementcontrol和一个uibarbutton,它被添加到导航控制器的导航栏中。但是,当我推送到下一个视图时,我希望将它们删除。我尝试了几种方法,但似乎没有任何方法可以删除它们。一种方法是使用viewWillDisappear并使用segementcontrol和bar按钮removeFromSuperView。另一个是从推送到下一个场景的方法调用removeFromSuperView。似乎没有什么工作。我实际上已经被困在这个很长一段时间了!
此外,视图控制器" X"具有segement控件和bar按钮通过presentViewController呈现。 X然后推送另一个视图控制器。
以下是分段控制的代码
NSArray *headers = @[@"Tracks", @"Playlists"];
self.savedMusic = [[UISegmentedControl alloc] initWithItems:headers];
CGSize size = self.view.frame.size;
CGRect segFrame = CGRectMake(80, 5, size.width - 140, 35);
self.savedMusic.backgroundColor = [UIColor blackColor];
self.savedMusic.frame = segFrame;
self.savedMusic.tag =1;
[self.savedMusic setTitle:@"Tracks"
forSegmentAtIndex:0];
[self.savedMusic setTitle:@"Playlists"
forSegmentAtIndex:1];
[self.savedMusic addTarget:self
action:@selector(whatToDisplay)
forControlEvents:UIControlEventValueChanged];
self.savedMusic.selectedSegmentIndex = 0;
[self.navigationController.navigationBar addSubview:self.savedMusic];
以下是viewWillDisapear的代码
[super viewWillDisappear:animated];
self.navigationController.navigationBar.barStyle = UIBarStyleDefault;
self.navigationItem.leftBarButtonItem = nil;
[self.savedMusic removeFromSuperview];
以下是切换到新视图的方法的代码
PlaylistTracksTableViewController *vc = [[PlaylistTracksTableViewController alloc] init];
[self.savedMusic removeFromSuperview];
[[self.navigationController.navigationBar viewWithTag:1] removeFromSuperview];
self.navigationItem.leftBarButtonItem = nil;
[self.navigationController pushViewController:vc animated:YES];
答案 0 :(得分:1)
问题是你正在做的不是如何操纵导航栏的内容。不要与self.navigationController.navigationBar
交谈。相反,每个视图控制器都应该设置自己的self.navigationItem
,运行时将使用它来填充该视图控制器的导航栏。