iOS - 获取用户权限后立即更新视图

时间:2016-06-16 01:06:48

标签: ios objective-c iphone swift

获得用户权限后是否可以立即更新视图?

例如,我有一个tableViewCell,询问用户是否要启用推送通知。如果用户按下是,则会打开Apple系统提示以启用推送通知。

我的问题是,有没有办法在用户按下"是"后立即更新单元格?

现在,它只是返回到tableView,用户必须手动刷新tableView才能生成" enableNotifications"单元格消失(我检查是否已启用推送通知),但我希望在用户点击Apple的系统对话框后立即自动完成此过程

4 个答案:

答案 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。

不确定这一点,但希望这对您有帮助。