如何在单击导航栏中的按钮时加载UICollectionViewController?

时间:2013-05-02 13:15:48

标签: iphone ios uinavigationcontroller uicollectionview

我有一个类DisplayOptViewController,它是UICollectionViewController的子类。 我想在用户单击当前页面上导航栏中的按钮时显示此CollectionViewController。我可以在按钮上加载CollectionView单击但导航栏不会出现。我希望用户能够在导航栏中看到后退按钮,然后单击按钮可以将他带回当前页面。 我试图通过故事板以及编程方式来做到这一点。当我通过Storyboard尝试这个时,ViewController本身不显示,当我以编程方式创建视图控制器对象时,我没有得到导航栏。知道怎么做到这个吗?

我尝试将此代码添加到viewDidLoad中的DisplayOptViewController方法:

UINavigationBar *navBar=[[UINavigationBar alloc] init];
[[self navigationController] setNavigationBarHidden:NO animated:YES];
[self.navigationController.navigationBar addSubview:navBar];

但导航栏仍然没有来。请帮助。

更新

我在这里加载UICollectionView

UICollectionViewFlowLayout *aFlowLayout = [[UICollectionViewFlowLayout alloc] init];
[aFlowLayout setItemSize:CGSizeMake(140, 50)]; 
[aFlowLayout setScrollDirection:UICollectionViewScrollDirectionVertical];
DisplayOptViewController *vc=[[DisplayOptViewController alloc] initWithCollectionViewLayout:aFlowLayout];
[self presentViewController:vc animated:YES completion:nil];

2 个答案:

答案 0 :(得分:0)

你有一些我质疑的事情,

[self.navigationController.navigationBar addSubview:navBar];

您要在导航栏中添加导航栏....请改为执行此操作

[self.navigationController setNavigationBar:navBar];

第二

[self presentViewController:vc animated:YES completion:nil];

你正在呈现控制器....不推/弹它......

[self.navigationController pushViewController:vc animated:YES];

以编程方式执行此操作

至于故事板可能你没有正确设置segue,或者没有设置正确的属性......但是我不能像这样调试它

答案 1 :(得分:0)

如果您有基于导航的项目,则必须在应用程序委托本身中初始化导航控制器。尝试使用以下代码使导航栏可见,

在应用程序didFinishLaunchingWithOptions方法中,

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.viewController = [[ViewController alloc] init];
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:[self viewController]];
[[self window] setRootViewController:navigationController];
[self.window makeKeyAndVisible];
return YES;

现在您的导航栏将会出现。