我有一个类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];
答案 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;
现在您的导航栏将会出现。