0

提供更多细节:我正在使用 FBLoginView。我正在为我的 LoginViewController 使用故事板和单独的 xib 文件。在我的应用程序中,我有一个 loginViewController,它是一个 FBLoginViewDelegate。还有一个 SettingsViewController,它是一个 FBUserSettingsDelegate。我的 loginView 中有一个跳过按钮,以便以访客身份而不是 facebook 用户身份登录。

现在我要做的是:当应用程序打开时,我会显示一个演练视图,其中包括底部的登录视图。当用户使用 Facebook 登录按钮登录时,会通过 facebook sdk 自动执行以下方法:

- (void)loginViewFetchedUserInfo:(FBLoginView *)loginView
                        user:(id<FBGraphUser>)user;

在这种方法中,我正在执行主视图的转场。

但是人们也可以选择先以访客身份登录,然后转到“设置”,他们仍然可以登录 Facebook。恰好执行上述相同的方法!

但是后来我的 segue 没有被识别,因为我不再在 Walkthrough 视图控制器中。现在我在设置视图控制器中,它在我的故事板的层次结构中处于完全不同的位置。

所以我的问题是:我怎么知道这个方法是从哪个视图控制器调用的?

我收到此警告:尝试显示不在窗口层次结构中的视图!

感谢您的所有帮助。

4

1 回答 1

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;
}
于 2013-07-31T10:50:11.723 回答