1
为了努力练习MVC(也松散地遵循教程),我已经放置了一个方法,将地址簿联系人导入从NSObject
继承的,名为Model.h
的单独数据类中。它不是UIViewController
而是NSObject
。IOS:访问来自NSObject的故事板
我遇到的问题是,如果访问联系人被拒绝,我想跳转到另一个视图控制器。而NSObject
显然不会给你访问storyboard
。
模型和处理所发生事件的视图控制器之间的通信目前通过NSNotificationCenter
,但我无法弄清楚如何简洁地传达用户拒绝访问联系人的事实。
任何人都可以建议允许从NSObject
访问故事板或从NSObject
与活动UIViewController
通信,该访问已被拒绝。
- (void)fetchAddressBookContacts
{
ABAddressBookRef addressBook = ABAddressBookCreateWithOptions(NULL, NULL);
switch (ABAddressBookGetAuthorizationStatus()) {
case kABAuthorizationStatusAuthorized:
{
NSLog(@"User has already granted access to the Address Book");
[self extractContactsFromAddressBookAlt];
break;
}
case kABAuthorizationStatusDenied:
{
NSLog(@"User has denied access to the Address Book");
dispatch_async(dispatch_get_main_queue(), ^{
[self gotoNewVC];//does not work
});
break;
}
}
if (addressBook) {
CFRelease(addressBook);}
}
//following is not getting called from NSObject
-(void) gotoNewVC {
UIViewController* rootController = [[UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]] instantiateViewControllerWithIdentifier:@"newVC"];
UINavigationController* navigation = [[UINavigationController alloc] initWithRootViewController:rootController];
self.window.rootViewController = navigation;
}