提供更多细节:我正在使用FBLoginView。 我正在为我的LoginViewController使用故事板和单独的xib文件。 在我的应用程序中,我有一个loginLogController,它是一个FBLoginViewDelegate。 还有一个SettingsViewController,它是一个FBUserSettingsDelegate。 我在loginView中有一个跳过按钮,以便以访客身份登录而不是Facebook用户。
现在我正在做的是: 当应用程序打开时,我会显示一个Walkthrough视图,其中包含底部的登录视图。 当用户使用Facebook登录按钮登录时,以下方法将通过facebook sdk自动执行:
- (void)loginViewFetchedUserInfo:(FBLoginView *)loginView
user:(id<FBGraphUser>)user;
在这个方法中,我正在执行一个segue到主视图。
然而,人们也可以选择首先以访客身份登录,然后转到“设置”,他们仍然可以登录Facebook。这恰好执行上面相同的方法!
但是我的segue没有被识别,因为我不再在Walkthrough视图控制器中了。现在我在设置视图控制器中,它在我的故事板中的层次结构中处于完全不同的位置。
所以我的问题是: 我如何知道从哪个viewcontroller调用此方法?
我收到此警告: 尝试在窗口层次结构中显示其视图!
感谢您的帮助。
答案 0 :(得分:1)
MyAppDelegate *tmpDelegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate];
id myCurrentController = tmpDelegate.myNavigationController.topViewController;
NSLog(@"%@", NSStringFromClass(myCurrentController.class));
希望这会有所帮助..
试试这个:
+ (UIViewController*) topMostController
{
UIViewController *topController = [UIApplication sharedApplication].keyWindow.rootViewController;
while (topController.presentedViewController) {
topController = topController.presentedViewController;
}
return topController;
}