2016-04-14 7 views
1

MVCを練習するために(また、チュートリアルにゆるやかに)、NSObjectを継承するModel.hという別のデータクラスにアドレス帳の連絡先をインポートするメソッドを配置しました。 UIViewControllerではなく、むしろNSObjectです。IOS:NSObjectからストーリーボードにアクセス

私が遭遇した問題は、連絡先へのアクセスが拒否された場合、別のView Controllerにジャンプしたいということです。 NSObjectは明らかにstoryboardへのアクセスを提供していません。

何が起こるかを処理するView Controllerとの通信は現在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; 
} 

答えて

1
UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"Main" 
                 bundle: nil]; 
SlowViewController*view=[mainStoryboard instantiateViewControllerWithIdentifier:@"newVC"]; 
[self.navigationController pushViewController:view animated:YES]; 

おかげ

、ビューコントローラの右のインスタンスを作ります
関連する問題