我正在构建一个 iOS7 应用程序,我正在尝试利用新useLayoutToLayoutNavigationTransitions
效果。我有 2 UICollectionViewControllers
,当我执行以下操作时,我得到了过渡效果
SecondViewController *secondVC = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil];
secondVC.useLayoutToLayoutNavigationTransitions = YES;
[self.navigationController pushViewController:secondVC animated:YES];
这工作正常,但我想做的是进行 api 调用,然后在完成块中我想像这样推送到导航堆栈
[webAPI getDetailsWithParams:params andCompletionBlock:^(id dict) {
//some work on the result
SecondViewController *secondVC = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil];
secondVC.useLayoutToLayoutNavigationTransitions = YES;
[self.navigationController pushViewController:secondVC animated:YES];
} andErrorBlock:^(NSError *error) {
}];
但这每次都会崩溃,并带有以下味精
-[UICollectionView _invalidateLayoutWithContext:]: message sent to deallocated instance 0x17a26400
谁能告诉我在这种情况下我做错了什么?从完成块推送时如何获得过渡效果?
编辑:通过将其更改为以下内容,我能够过渡到第二个视图控制器。
MyLayout *layout = [[MyLayout alloc] init];
SecondViewController *expandedVC = [[SecondViewController alloc] initWithCollectionViewLayout:layout];
我还删除了文件附带的 nib 文件。nib 文件只包含一个集合视图,它是文件所有者视图。虽然我现在可以转换,但我仍然不明白为什么我不能在一个块中执行以前的 nib 方法。因此,如果有人能为我提供一些启示,我将不胜感激。