我有主视图控制器,当通过Parse和Facebook登录验证用户viewDidLoad
时:
if ([PFUser currentUser] == nil && [FBSDKAccessToken currentAccessToken] == nil) {
WelcomeViewController *welcomeController = [self.storyboard instantiateViewControllerWithIdentifier:@"Welcome"];
[self presentViewController:welcomeController animated:YES completion:nil];
}
当我尝试从欢迎视图控制器推送数据时,我使用self.presentingViewController
:
MainFeedTableViewController *mc = (MainFeedTableViewController *)self.presentingViewController;
mc.username = self.fbUsername;
但是
编译器将其视为UINavigationController
:
-[UINavigationController setUsername:]: unrecognized selector sent to instance 0x7f92b9009a00
。
当我使用self
的{{1}}时,这怎么可能?
答案 0 :(得分:0)
当您调用[self presentViewController:welcomeController animated:YES completion:nil];
演示文稿是通过UINavigationController完成的(我假设您的应用程序中有导航控制器)。它的作用是在其导航层次结构中显示视图,如果MainFeedTableViewController
是层次结构中的第一个视图,则可以使用以下内容获取MainFeedTableViewController
MainFeedTableViewController * viewController = (MainFeedTableViewController*)[self.navigationController.viewControllers objectAtIndex:0];
如果它不是第一个并且你想使用相对定位,你可以做这样的事情
MainFeedTableViewController * viewController = (MainFeedTableViewController*)[self.navigationController.viewControllers objectAtIndex:
[self.navigationController.viewControllers indexOfObject:self ]- 1];
首先会找到自我索引(WelcomeViewController
),然后在UINavigationController
个视图数组中找到一个视图,这个视图就在这个视图的后面。