获得用户权限后是否可以立即更新视图?
例如,我有一个tableViewCell,询问用户是否要启用推送通知。如果用户按下是,则会打开Apple系统提示以启用推送通知。
我的问题是,有没有办法在用户按下"是"后立即更新单元格?
现在,它只是返回到tableView,用户必须手动刷新tableView才能生成" enableNotifications"单元格消失(我检查是否已启用推送通知),但我希望在用户点击Apple的系统对话框后立即自动完成此过程
答案 0 :(得分:0)
在警报关闭中调用IEqualityComparer
,或者如果您有对单元格索引的引用,则只能更新该单元格tableView.reloadData()
答案 1 :(得分:0)
在上面的iOS8中,您可以处理UIAlertViewController的每个动作
let alertController = UIAlertController(title: "UIAlertController", message: "Do you want to receive notification?", preferredStyle: .Alert)
let ok = UIAlertAction(title: "Yes", style: .Default, handler: { (action) -> Void in
print("Yes Button Pressed")
// do any action here
})
let cancel = UIAlertAction(title: "Cancel", style: .Cancel) { (action) -> Void in
print("Cancel Button Pressed")
}
alertController.addAction(ok)
alertController.addAction(cancel)
但在iOS8以下,应该使用UIAlertViewDelegate
答案 2 :(得分:0)
只需更改您的数据,因为您在分配给函数中的单元格时,只需调用此函数,当用户触摸任何警报上的“是”按钮时触发该单元格。
[tableView reloadData]; //Objc
OR
tableView.reloadData() //Swift
答案 3 :(得分:0)
我不确定这一点,但你可以尝试一下。
在Appdelegate.m类中,您可以为推送通知定义两种方法
- (void)application:(UIApplication*)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken {
// Call you code to update tableview for that ViewController.
}
- (void)application:(UIApplication *)app didFailToRegisterForRemoteNotificationsWithError:(NSError *)err {
// Show alert to user that you denied
}
此外,您可以编程方式检查用户是否已授予推送权限,具体取决于您是否可以管理代码和UI。
不确定这一点,但希望这对您有帮助。