停止观看消失

时间:2012-08-10 05:27:40

标签: iphone ios cocoa ios5 xcode4.3

我通过推送其表视图单元从另一个视图控制器启动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方法来调用和停止它。

感谢。

4 个答案:

答案 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)

抱歉,我不擅长英语,所以阅读这么长的文字对我来说有点困难。我只能得到你想要没有按钮回去的东西。我知道navigationController有一个返回上一个视图的方法。

答案 3 :(得分:0)

制作自定义后退按钮并使用self.navigationItem.hidesBackButton=YES 将目标添加到自定义后退按钮并根据需要使用它。如果要移动视图,可以使用[self.navigationController popViewcontroller]