UIViewController嵌入在UINavigationViewController中。 UIViewController附加了一个UINavigationItem,并有一个UIContainerView作为子视图。 UIContainerView有一个嵌入到具有一些静态行的UITableViewController的segue。
如何在用户按下“高级”行时进行此操作 右边的小箭头图像,UIViewContainer的嵌入segue得到 更改为引用另一个UITableViewController并返回 UINavigationController上的按钮,以便用户可以导航 回到原来的UITableViewController(带动画)?
基本上我希望用户能够在“设置”和“高级设置”之间切换。
我尝试过的事情: 我尝试让容器视图嵌入到UINavigationController的segue。第一个UITableViewController被设置为与UINavigationController具有根视图控制器segue关系。然后我在箭头(按钮)和另一个UITableViewController之间做了一个show segue。通过这种方式,我可以在设置之间进行转换 - >高级设置 - >设置,但我有双导航栏。一个是我想要的栏,白色一个在顶部,另一个是灰色的,显示在下方和后退按钮的位置。我希望它是一个单一的导航栏(白色)。
使用代码实现我想要的(Objective-C或Swift)没有问题。
答案 0 :(得分:0)
最后,我通过添加后退按钮并以编程方式解除“高级设置”视图控制器来完成代码。我通过创建一个show segue到“高级设置”UITableView来实现这一目标。然后我继承了UITableViewController:
@implementation AdvancedSettingsController
- (void)viewDidLoad
{
[super viewDidLoad];
UIBarButtonItem* backButton = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:self action:@selector(goBack)];
self.navigationController = (UINavigationController*)self.parentViewController;
self.parentViewController.parentViewController.navigationItem.leftBarButtonItem = backButton;
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
}
#pragma mark - Table view data source
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
#warning Incomplete implementation, return the number of sections
return 0;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
#warning Incomplete implementation, return the number of rows
return 0;
}
-(IBAction)goBack
{
[self.navigationController popViewControllerAnimated:YES];
}
@end
我只是希望使用Xcode构建器来完成自动化过程,因为我不喜欢self.parentViewController.parentViewController的事情,因为如果我更改我的控制器,这将停止工作并且有点困难阅读。