重定向警报框按钮



我想知道我们是否可以将警告框重定向到特定的视图。这意味着当他们点击通知警报上的"视图"时,它会将他们重定向到特定的视图,就像文本消息通知弹出一样。你知道这是怎么回事吗?

从你的问题来看,你可能是指两种类型的警报对话框:

  1. 通用的"警告框";或UIAlertView
  2. 一个UILocalNotification警报对话框,当应用程序在后台显示("就像文本消息通知弹出")

我将按顺序称呼他们。


首先,如何处理UIAlertView "视图"按钮点击。

在您的控制器类中实现UIAlertViewDelegate协议的alertView:didDismissWithButtonIndex:方法,当您init时,UIAlertView将其delegate设置为self。然后,当用户点击标有"查看"的按钮时,执行如下操作:

- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex
{
    if([[alertView buttonTitleAtIndex:buttonIndex] isEqualToString:@"View"])
    {
        // take the user to a specific view
    } else { // handle other cases if you have any
    
    }
}

其次,如何处理触发应用程序启动的UILocalNotification

Apple docs on UILocalNotification state:

如果通知是一个警报,并且用户点击操作按钮(或者,如果设备被锁定,拖动打开操作滑块),则启动应用程序。在applicationdidfinishlaunchingwithoptions:方法中,应用程序委托可以通过使用UIApplicationLaunchOptionsLocalNotificationKey键从传入的选项字典中获取UILocalNotification对象。委托可以检查通知的属性,如果通知在其userInfo字典中包含自定义数据,它可以访问该数据并相应地处理它。

另一方面,如果本地通知只标记应用程序图标,并且响应中的用户启动应用程序,则调用application:didFinishLaunchingWithOptions:方法,但选项字典中不包含UILocalNotification对象。

你需要在你的应用程序委托类的application:didFinishLaunchingWithOptions:方法中编写代码来处理这个启动情况。

如果你碰巧在应用程序运行时得到一个UILocalNotification,苹果文档说明:

如果应用程序在系统发送通知时最重要且可见,则不会显示警报,不会标记图标,也不会播放声音。然而,如果应用程序委托实现它,则调用applicationdidreceivelocalnotification。UILocalNotification实例被传递到这个方法中,委托可以检查它的属性或从userInfo字典中访问任何自定义数据。


EDIT:要将用户直接带到特定视图,您可以手动将某些内容推送到UINavigationController堆栈上(如果您的应用程序通常使用导航控制器操作,那么这样做是有意义的),或者呈现模态视图控制器。

最新更新