Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 正在进行转换时尝试开始模式转换_Ios_Facebook_Uiviewcontroller - Fatal编程技术网

Ios 正在进行转换时尝试开始模式转换

Ios 正在进行转换时尝试开始模式转换,ios,facebook,uiviewcontroller,Ios,Facebook,Uiviewcontroller,我正在检查用户是否登录到Facebook。如果是,我想将它们转移到另一个视图 我遇到的问题是,loginViewFetchedUserInfo和loginViewShowingLoggedInUser都是在视图实际加载之前调用的 因此,当调用[self showWelcome:self]时,我得到一个“试图在转换过程中开始模式转换”错误 我似乎想不出一种方法来等待视图加载完成后再将其发送到新视图 - (void)loginViewShowingLoggedInUser:(FBLoginView

我正在检查用户是否登录到Facebook。如果是,我想将它们转移到另一个视图

我遇到的问题是,
loginViewFetchedUserInfo
loginViewShowingLoggedInUser
都是在视图实际加载之前调用的

因此,当调用
[self showWelcome:self]
时,我得到一个“试图在转换过程中开始模式转换”错误

我似乎想不出一种方法来等待视图加载完成后再将其发送到新视图

- (void)loginViewShowingLoggedInUser:(FBLoginView *)loginView {

    // Set flag
    isFirstLoginDone = YES;

    NSLog(@"User is logged in");
}

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

    // Check first login
    if(isFirstLoginDone) {
         [self showWelcome:self];
    }

    // clear the flag
    isFirstLoginDone = NO;

}

- (IBAction)showWelcome:(id)sender
{
    UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"WelcomeStoryboard" bundle:nil];
    UIViewController *vc = [mainStoryboard instantiateViewControllerWithIdentifier:@"WelcomeController"];
    [self presentViewController:vc animated:YES completion:nil];
}
-(void)loginView显示日志用户:(FBLoginView*)loginView{
//设旗
isFirstLoginDone=YES;
NSLog(@“用户已登录”);
}
-(无效)loginView蚀刻教育信息:(FBLoginView*)loginView
用户:(id)用户{
//检查第一次登录
如果(isFirstLoginDone){
[自我展示欢迎:自我];
}
//清除旗帜
isFirstLoginDone=否;
}
-(iAction)showWelcome:(id)发件人
{
UIStoryboard*mainStoryboard=[UIStoryboard Storyboard with name:@“WelcomeStoryboard”bundle:nil];
UIViewController*vc=[MainstryBoard实例化ViewController的标识符:@“WelcomeController”];
[自我呈现视图控制器:vc动画:是完成:无];
}

是的,当您在显示某个viewController的同时显示另一个viewController时,会发生这种情况。为此,创建一个伪方法,如下代码所示,并以较小的时间间隔启动它

- (IBAction)showWelcome:(id)sender{
   [self someMethod];
}

-(void)someMethod{
    if(self.isBeingPresented){
        [self performSelector:@selector(someMethod) withObject:nil afterDelay:.1];
    }
    else{
        UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"WelcomeStoryboard" bundle:nil];
        UIViewController *vc = [mainStoryboard instantiateViewControllerWithIdentifier:@"WelcomeController"];
        [self presentViewController:vc animated:YES completion:nil];
    }
}