【问题标题】:Back navigation from an alert view button从警报视图按钮返回导航
【发布时间】:2011-02-09 10:14:20
【问题描述】:

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

在 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];
}}

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


我会尝试更好地解释它,以便向您表明我的问题可能更难解决...

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

然后,从带有标签栏的那个视图(其中我已经添加了一些子视图)我想导航回(单击警报按钮)到没有标签栏的视图,我假设它是上一个视图导航的堆栈,正如我在导航栏中按下后退按钮时看到的那样......

我不知道现在是不是更清楚了,还是我让你更困惑了...... 如果您愿意,我可以尝试为您制作控制器图。 感谢您的帮助!

【问题讨论】:

  • 您的描述已经足够了。让我们看看谁能帮忙。
  • 您确定self.navigationController 不是nil?而且,导航控制器已经有一些视图控制器了?
  • 对我来说很好。检查你推送视图控制器的代码。
  • 西蒙;我的“self.navigaitionController”不是零,听起来不错,但我已经检查过了,它对应于我现在的视图控制器。我也有一个带有后退按钮的导航栏,它工作正常,所以我认为视图控制器的堆栈设置正确。非常感谢您的贡献!
  • 你在说哪个视图控制器,Max?启动警报的那个? (也谢谢你!)

标签: iphone navigation alert back


【解决方案1】:

尝试在单独的线程中。

- (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];
  }

但这不是正确的做法。但暂时它会对你有所帮助。

【讨论】:

  • 恐怕代码和我的结果一样...无论如何,谢谢!
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-23
    • 2011-03-19
    • 1970-01-01
    • 1970-01-01
    • 2016-02-03
    • 1970-01-01
    • 2013-06-17
    • 1970-01-01
    相关资源
    最近更新 更多