当用户点击警报视图中显示的自定义“后退”按钮时,我遇到了导航到前一个视图控制器(在我的导航控制器的堆栈中)的一些问题。 我已经尝试了几种方法,但我无法做到这一点。当点击该按钮时,应用程序只需返回弹出警报的控制器(就好像用户按下“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];
}}
执行整个代码并且没有调试错误。 如果我没有正确解释我的麻烦,请告诉我,我会尽力做得更好! (我是西班牙语,我的英语不是最好的)。 提前谢谢。
我会尝试更好地解释它,以告诉你我的问题可能更难解决...
我有一个导航控制器,在确定的时刻,显示带有标签栏的视图。您可能知道无法在导航控制器中实现标签栏控制器,因此我使用了一个“自定义控制器”来插入该标签栏。
然后,从带有标签栏的视图中,(我已经在其中添加了一些子视图)我想向后导航(单击警报按钮)到没有标签栏的视图,我将其作为上一个视图当我按下导航栏中的后退按钮时,我可以看到导航的堆栈......
我不知道现在是否更清楚,或者我更加困惑你... 如果你愿意的话,我可以试着给你一个控制器图。 谢谢你的帮助!
答案 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
中的标签栏,并在需要时取消隐藏它。