我有一个嵌入在UITableViewController中的UINavigationController,我正在尝试在TableView中实现Peek & Pop。我的“窥视”部分工作得很好,但是当我试图“弹出”到下一个ViewController时,我正在“窥视”的单元格和下一个单元格都会显示出来。我正在“弹出”一个UICollectionView,正如我提到的,"peek“半显示正确的单元格,但是"pop”没有显示。只有在使用[self.navigationController showViewController:viewControllerToCommit sender:nil];或[self.navigationController pushViewController:viewControllerToCommit animated:YES];执行"pop“时才会发生此问题。
下面是显示正确单元格的"Peek“

和显示错误单元格的“流行音乐”

我尝试使用[self presentViewController:viewControllerToCommit animated:YES completion:nil];,并显示了正确的单元格,但这并没有给出我所需要的导航元素,所以我不能使用它(除非有一种方法可以让所有导航元素返回)。
我最初的想法是,我的应用程序如何计算出CollectionViewCell的大小是有问题的。下面是我所使用的代码,尽管它似乎与除了Peek & Pop之外的其他所有东西都能正常工作。
-(CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath {
CGSize collectionViewBounds = collectionView.bounds.size;
int navigationHeight = self.navigationController.navigationBar.bounds.size.height;
int toolbarHeight = self.navigationController.toolbar.bounds.size.height;
int statusBarHeight = [UIApplication sharedApplication].statusBarFrame.size.height;
int cellHeight = collectionViewBounds.height - (navigationHeight + statusBarHeight + toolbarHeight);
int cellWidth = collectionViewBounds.width;
return CGSizeMake(cellWidth, cellHeight);
}让我更困惑的是,当TableView中的第一项或最后一项被“窥视”时,"pop“就会完美地工作。如果能对此提供任何帮助,我们将不胜感激。
发布于 2016-04-07 10:48:09
所以我终于弄明白是什么导致了这个问题。我的应用程序是一个通用应用程序,我在iPads上使用了Popover。在“弹出”错误的viewWillAppearof my ViewController中,我使用[self setPreferredContentSize:CGSizeMake(400.0, 600.0)]来确定iPad上的Popover的大小。一旦我去掉了这句话,我的Peek & Pop就完美地工作了。
最后,我向我的ViewController @property BOOL fromPeek添加了一个新属性,并在预览ViewController的- (UIViewController *)previewingContext:(id <UIViewControllerPreviewing>)previewingContext viewControllerForLocation:(CGPoint)location中将该属性设置为YES。最后,我将我的viewWillAppear修改为if(!fromPeek) [self setPreferredContentSize:CGSizeMake(400.0, 600.0)];,现在问题已经解决了!
https://stackoverflow.com/questions/35527237
复制相似问题