我正在尝试构建与“联系人”相关的应用。在Storyboard中,入口点是UITabbarController,然后是四个UINavigationController,它连接到分离的ViewController,如下所示。
在我的第一个tabbarItem中,原始ViewController被称为contactsVC。我将代码用于检测IOS是否允许此应用访问ViewWillAppear中的联系人。如果不允许,我想放置另一个ViewController来显示隐私策略,然后给出按钮以显示IOS对话。
contactsVC.swift:
let privacyViewController = self.storyboard?.instantiateViewController(withIdentifier: "accessForContactsViewController") as! AccessForContactsViewController
self.navigationController?.setViewControllers([privacyViewController], animated: false)
使用上面的代码,我可以将隐私视图控制器嵌入tabbarController。
在privacyViewController中的,点击按钮后,我的代码如下。
globalContactStore.requestAccess(for: CNEntityType.contacts, completionHandler: {(access, error) -> Void in
if access {
let contactVC = self.storyboard?.instantiateViewController(withIdentifier: "contactsViewController")
self.navigationController?.setViewControllers([contactVC!], animated: false)
}
} else {
let gotoSettingsVC = self.storyboard?.instantiateViewController(withIdentifier: "gotoSettingsViewController")
self.navigationController?.setViewControllers([gotoSettingsVC!], animated: false)
}
})
我的目的是,如果允许访问,应用程序会在当前标签栏中显示原始视图控制器,即contactsVC。否则,显示另一个视图控制器。但上面的代码不起作用。