加载视图控制器,但在第二次点击tableview之前不会显示

时间:2014-02-19 09:19:26

标签: ios iphone objective-c uitableview

当我点击我的tableview时,会执行此代码:

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle:nil];
        ViewController *vc =[storyboard instantiateViewControllerWithIdentifier:@"ViewController"];
        vc.currentCategory = indexPath.row ;
        [self presentViewController: vc animated:YES completion:nil];
}

似乎所有东西都加载了,它在新的viewcontroller中的断点处中断。但它没有得到呈现。如果我第二次点击它会执行代码,但它会显示视图控制器。如果我去动画:不,一切都在第一次点击,但没有动画:是。什么想法可能是错的?

2 个答案:

答案 0 :(得分:2)

我遇到了完全相同的问题,结果证明是一个线程问题。您需要在以下内容中调用presentViewController:

 dispatch_async(dispatch_get_main_queue(), {
        self.presentViewController(controller, animated: true, completion: nil)
    })

请记住,我的回答是使用Swift,它应该是一个简单的转换回objective-c,但我很确定你遇到了像我一样的线程问题。希望这有助于人们。

答案 1 :(得分:1)

放手一搏:

UIView *containerView = self.view.window;
[containerView.layer addAnimation:NO forKey:nil];

UIViewController * otherViewCon = [self.storyboard instantiateViewControllerWithIdentifier:@"ViewController"];
[self presentViewController:otherViewCon animated:NO completion:nil];