我在点击collectionViewCell时试图呈现UITableViewController
。我已经使用didSelectItemAtIndexPath完成了这项工作。当我按下一个集合时,没有任何事情发生,在我按下后,UI被阻止,我无法做任何事情。没有显示错误/日志消息。为什么它不会出现viewController以及为什么没有错误消息?
UITableViewController interfaceBuilder:
-(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];
}
答案 0 :(得分:0)
我最好的猜测是,storyBoard需要时间来加载。维护实例级storyBoard对象并在didSelectItemAtIndexPath
进行惰性实例化。
懒惰的实例化代码:
- (UIStoryboard *)storyboard: {
if (!_storyboard) {
_storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
}
return _storyboard;
}
在didSelectItemAtIndexPath
,
UIStoryboard *storyboard = [self storyboard];
同样,这是我最好的猜测。它只是从给定的代码推断出来的。