我通过推送其表视图单元从另一个视图控制器启动viewController。现在在第二个视图控制器上,我有一大堆控件主要是测试字段。我想通过使用第二个视图控制器中提供的默认后退按钮,所以它将是第一个视图控制器的标题,并记住像我说的默认,所以我不想创建自己的按钮返回在第二个视图控制器上。因此,想要检测第二个视图控制器是退出还是消失或将消失,并且基于某些条件阻止它返回到原始调用者视图控制器。我最初认为可以在这里完成:
-(void) viewWillDisappear:(BOOL)animated {
if ([self.navigationController.viewControllers indexOfObject:self]==NSNotFound)
{
// So back button was pressed on the second view controller, so how do I stop it
// here from going back to the original view controller.
}
}
或者我该怎么办?我似乎无法找到一个视图控制器返回类型BOOL方法来调用和停止它。
感谢。
答案 0 :(得分:7)
请注意,该方法称为viewWillDisappear,而不是viewShouldDisappear,因此Apple不会让您停止视图在该点消失。从用户的角度来看,按下后退按钮确实应该将它们取回。相反,您可以考虑在不允许的情况下隐藏后退按钮。
答案 1 :(得分:1)
您无法阻止视图控制器关闭,但您可以模拟它。
此行将使用一个调用自制函数的按钮替换关闭按钮
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(closeBtn)];
因此,如果您愿意,您可以关闭视图:
- (void) closeBtn
{
bool shouldClose=true;
// Your conditions here
if (shouldClose) [self dismissViewControllerAnimated:YES completion:nil];
}
答案 2 :(得分:0)
答案 3 :(得分:0)
制作自定义后退按钮并使用self.navigationItem.hidesBackButton=YES
将目标添加到自定义后退按钮并根据需要使用它。如果要移动视图,可以使用[self.navigationController popViewcontroller]
。