从警报视图按钮返回导航

时间:2011-02-09 10:14:21

标签: iphone navigation alert back

当用户点击警报视图中显示的自定义“后退”按钮时,我遇到了导航到前一个视图控制器(在我的导航控制器的堆栈中)的一些问题。 我已经尝试了几种方法,但我无法做到这一点。当点击该按钮时,应用程序只需返回弹出警报的控制器(就好像用户按下“cancelButton”)。 希望您能通过以下示例代码了解我:

在viewDidLoad中,我弹出警告:

UIAlertView *alert = [[UIAlertView alloc] 
        initWithTitle:@"XXXXXX"
        message:@"" 
        delegate:self  
        cancelButtonTitle:@"OK"
        otherButtonTitles:@"Back", nil];
    [alert show];
    [alert release];

然后,在视图控制器的代码中,我调用下一个动作来尝试导航回来:

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{ 
if (buttonIndex == 1)
{
    [self.navigationController popViewControllerAnimated:YES];
}}

执行整个代码并且没有调试错误。 如果我没有正确解释我的麻烦,请告诉我,我会尽力做得更好! (我是西班牙语,我的英语不是最好的)。 提前谢谢。


我会尝试更好地解释它,以告诉你我的问题可能更难解决...

我有一个导航控制器,在确定的时刻,显示带有标签栏的视图。您可能知道无法在导航控制器中实现标签栏控制器,因此我使用了一个“自定义控制器”来插入该标签栏。

然后,从带有标签栏的视图中,(我已经在其中添加了一些子视图)我想向后导航(单击警报按钮)到没有标签栏的视图,我将其作为上一个视图当我按下导航栏中的后退按钮时,我可以看到导航的堆栈......

我不知道现在是否更清楚,或者我更加困惑你... 如果你愿意的话,我可以试着给你一个控制器图。 谢谢你的帮助!

2 个答案:

答案 0 :(得分:0)

尝试单独的线程。

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{ 
if (buttonIndex == 1)
{
   [self performSelectorInBackground:@selector(newThreadMethod) withObject:nil];
}
}
-(void)newThreadMethod{
     [self performSelectorOnMainThread:@selector(go) withObject:nil waitUntilDone:NO];
 }   
-(void)go{
       [self.navigationController popViewControllerAnimated:YES];
  }

但这不是一种正确的做法。但暂时它会帮助你。

答案 1 :(得分:0)

对于标签栏的部分,我已成功将navControllers与tabController合并。标签栏控制器必须位于图表的顶部,而不是每个标签栏项目的视图控制器,请使用navControllers,特别是在第一个标签栏项目中;只需隐藏第一个viewDidLoad中的标签栏,并在需要时取消隐藏它。