Ios7 集合视图子视图控制器缺少UINavigatinBar项

Ios7 集合视图子视图控制器缺少UINavigatinBar项,ios7,uinavigationcontroller,uicollectionview,uinavigationbar,uicollectionviewlayout,Ios7,Uinavigationcontroller,Uicollectionview,Uinavigationbar,Uicollectionviewlayout,通过在初始化子类时添加UICollectionViewController作为子视图控制器,我对UINavigationController进行了子类化: -(id)init{ self = [super init]; if(self){ UICollectionViewController *collectionViewController = [[UICollectionViewController alloc] initWithCollectionView

通过在初始化子类时添加UICollectionViewController作为子视图控制器,我对UINavigationController进行了子类化:

-(id)init{
    self = [super init];
    if(self){

        UICollectionViewController *collectionViewController = [[UICollectionViewController alloc] initWithCollectionViewLayout:[self getLayout]];

        UIBarButtonItem *cancelItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(cancelPressed)];
        collectionViewController.navigationItem.rightBarButtonItem = cancelItem;

        [self addChildViewController:collectionViewController];
    }
    return self;
} 
要初始化布局,我调用getLayout方法:

- (UICollectionViewFlowLayout *)getLayout {

    CGFloat itemWidth = self.view.frame.size.width;

    CGSize itemSize = CGSizeMake(itemWidth, itemWidth);
    UICollectionViewFlowLayout *flowLayout = [[UICollectionViewFlowLayout alloc] init];
    [flowLayout setItemSize:itemSize];
    return flowLayout;
}
但是,当我使用此代码时,iOS 7应用程序不会显示任何导航栏项iOS 8仍然有效。但是,如果我更改行:

 CGFloat itemWidth = self.view.frame.size.width;


一切都很好。两行返回相同的值。知道为什么会发生这种情况吗?

尝试在viewDidLoad方法中添加视图。很可能是在加载控制器的视图之前配置控制器。这没有什么区别。我使用屏幕大小没有问题,我只是想知道为什么它会有不同。
 CGFloat itemWidth = [[UIScreen mainScreen] bounds].size.width;