呈现UITableViewController阻止UI

时间:2014-09-01 08:39:37

标签: objective-c uitableview

我在点击collectionViewCell时试图呈现UITableViewController。我已经使用didSelectItemAtIndexPath完成了这项工作。当我按下一个集合时,没有任何事情发生,在我按下后,UI被阻止,我无法做任何事情。没有显示错误/日志消息。为什么它不会出现viewController以及为什么没有错误消息?

UITableViewController interfaceBuilder:

enter image description here

-(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath 
{
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];

    HomeProfileViewController *hpvc = [storyboard instantiateViewControllerWithIdentifier:@"NavProfile"];

    hpvc.idString= [[homesDic objectAtIndex:indexPath.item] objectForKey:@"idString"];
    hpvc.imageArray = [[NSMutableArray alloc]init];
    hpvc.imageArray = [imageDic objectAtIndex:indexPath.item];

    [self presentViewController:hpvc animated:YES completion:nil];
}

1 个答案:

答案 0 :(得分:0)

我最好的猜测是,storyBoard需要时间来加载。维护实例级storyBoard对象并在didSelectItemAtIndexPath进行惰性实例化。

懒惰的实例化代码:

- (UIStoryboard *)storyboard: {
    if (!_storyboard) {
        _storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
    }
    return _storyboard;
}

didSelectItemAtIndexPath

UIStoryboard *storyboard = [self storyboard];

同样,这是我最好的猜测。它只是从给定的代码推断出来的。