先写一个方法, 强制增加一个navigation的属性. 这样self就可以调出来navigation了
- (UINavigationController*)naviController { for (UIView* next = [self superview]; next; next = next.superview) { UIResponder* nextResponder = [next nextResponder]; if ([nextResponder isKindOfClass:[UINavigationController class]]) { return (UINavigationController*)nextResponder; } } return nil; }
然后, 在cell的点击方法中调用这个属性, 并推出一个新的界面:
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { myViewController *vc = [[myViewController alloc]init]; [[self naviController] presentViewController:vc animated:YES completion:nil]; }