0

我有一个类,DisplayOptViewController,它是 UICollectionViewController 的子类。当用户单击当前页面上导航栏中的按钮时,我想显示此 CollectionViewController。我可以在单击按钮上加载 CollectionView,但导航栏没有出现。我希望用户能够在导航栏中看到一个后退按钮,单击该按钮应该让他回到当前页面。我试图通过故事板和编程方式来做到这一点。当我通过情节提要尝试此操作时,不会显示 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];
4

2 回答 2

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;

现在您的导航栏将出现。

于 2013-05-02T14:29:50.613 回答
0

你有几个问题我要问

[self.navigationController.navigationBar addSubview:navBar];

您正在向导航栏添加导航栏....改为执行此操作

[self.navigationController setNavigationBar:navBar];

第二

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

您正在展示控制器....而不是推动/弹出它....

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

当您以编程方式执行此操作时尝试

至于情节提要,也许你没有正确设置segue,或者属性设置不正确等等......但我不能像这样调试它

于 2013-05-02T13:57:37.097 回答