我想为特定项目设置警报并让UILocalNotification
从我的表格视图控制器打开特定项目并显示其详细信息。换句话说,当出现通知时,我希望能够点击“显示项目”,而不是显示所有项目的列表,而是希望查看该特定项目的详细信息。UILocalNotification为特定项目打开详细视图控制器
为了这个工作,我需要存储关于特定项目(标题,索引等)的信息。我该怎么做?将我的物品的标题存储在UILocalNotification.userInfo
?
我想为特定项目设置警报并让UILocalNotification
从我的表格视图控制器打开特定项目并显示其详细信息。换句话说,当出现通知时,我希望能够点击“显示项目”,而不是显示所有项目的列表,而是希望查看该特定项目的详细信息。UILocalNotification为特定项目打开详细视图控制器
为了这个工作,我需要存储关于特定项目(标题,索引等)的信息。我该怎么做?将我的物品的标题存储在UILocalNotification.userInfo
?
添加信息
目标C
localNotification.userInfo [email protected]{@"title":title,@"index":index};
斯威夫特
var userInfo = [String:String]()
userInfo["title"] = title
userInfo["index"] = index
notification.userInfo = userInfo
要获取信息时,通知到达
目标C
- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification
{
NSLog(@“title = %@”,notification.userInfo[@"title"]);
NSLog(@“index = %@”,notification.userInfo[@"index"]);
}
斯威夫特
func application(application: UIApplication!, didReceiveLocalNotification notification: UILocalNotification!) {
println(notification.userInfo?["title"])
println(notification.userInfo?["index"])
}
******** ********编辑
传递从通知的用户信息 “标题” 和 “指标” 到Table View Controller
目标C
- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification
{
[[NSNotificationCenter defaultCenter] postNotificationName:@"BookNotification" object:notification.userInfo]
// or update table view data source
}
夫特
func application(application: UIApplication!, didReceiveLocalNotification notification: UILocalNotification!) {
NSNotificationCenter.defaultCenter().postNotificationName("BookNotification", object:notification.userInfo)
// or update table view data source
}
在Table View Controller
增加观察员的时候通知到获得 “冠军” 和 “指标”,那么更新Table View Controller
datasource
和重装tableview
内Table View Controller
目标C
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(receiveBookNotification:)
name:@"BookNotification"
object:nil];
- (void) receiveTestNotification:(NSNotification *) notification
{
NSString *title = notification.userInfo[@"title"];
NSString *title = notification.userInfo[@"index"];
// Update data source and reload
}
斯威夫特
NSNotificationCenter.defaultCenter().addObserver(self, selector: "receiveBookNotification:", name:"BookNotification", object: nil)
func receiveTestNotification(notification: NSNotification) {
let title = notification.userInfo?["title"]
let index = notification.userInfo?["index"]
// Update data source and reload
}
是的,你可以这样做。本地通知的userInfo属性用于将您需要的任何信息传递给通知处理程序。
如果您想让按钮显示给用户,您将需要为您的本地通知添加操作,并且您还必须处理通知在应用处于前台时触发的情况,通知显示给用户。
看起来很好,你可以做到这一点。! –
如果您在Google上搜索过,则称之为“深层链接”:-) –
网上的示例似乎表明userInfo是一本词典。是这样吗?通常在这种情况下会使用哪些密钥? – Daniel
谢谢!当我想在通知到达时获取信息时,我想将标题从通知的userInfo传递到Table View Controller。我该怎么做呢?使标题成为一个全局变量?最佳做法是什么? – Daniel
答案更新以反映“将通知的userInfo标题传递给表视图控制器” – Sudhir
谢谢!我试过这个。添加到viewDidLoad()以下内容:NSNotificationCenter.defaultCenter()。addObserver(self,selector:#selector(RemindersMainVC.receiveReminderNotification),name:“ReminderNotification”,object:nil)。一切正常,receiveTestNotification()确实被调用,但通知参数为零。 – Daniel