我想知道我们是否可以将警告框重定向到特定的视图。这意味着当他们点击通知警报上的"视图"时,它会将他们重定向到特定的视图,就像文本消息通知弹出一样。你知道这是怎么回事吗?
从你的问题来看,你可能是指两种类型的警报对话框:
- 通用的"警告框";或
UIAlertView
- 一个
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
堆栈上(如果您的应用程序通常使用导航控制器操作,那么这样做是有意义的),或者呈现模态视图控制器。