Objective C - 使用导航推送调用 UICollectionview
Posted
技术标签:
【中文标题】Objective C - 使用导航推送调用 UICollectionview【英文标题】:Objective C - Calling UICollectionview using navigation push 【发布时间】:2018-05-26 05:53:10 【问题描述】:我正在实现没有情节提要或 xib 文件的 UICollectionView。 目前我的 firstviewcontroller 嵌入在导航控制器中,并在单击按钮时调用 collectionviewcontroller。
这是我在 firstviewcontroller.m 中的代码
UICollectionViewFlowLayout *layout=[[UICollectionViewFlowLayout alloc] init];
layout.sectionInset = UIEdgeInsetsMake(20, 20, 20, 20);
layout.minimumInteritemSpacing = 0;
layout.minimumLineSpacing = 20;
CollectionViewController *ivc = [[CollectionViewController alloc] initWithCollectionViewLayout:layout];
[self.navigationController pushViewController:ivc animated:NO];
但是我不想在这里有布局代码。我想把它放在collectionviewcontroller.m 的某个地方。我猜可能在 viewDidLoad 中?
但我必须有布局来初始化 collectionviewcontroller 以便推送视图。 有一个更好的方法吗?任何帮助,将不胜感激。
【问题讨论】:
请一次标记一种语言 Objective C 或 Swift..以便用户了解他们必须用哪种语言给出答案 【参考方案1】:您可以像下面的代码一样在推送 viewController 后设置 FlowLayout,如果这仍然不能解决您的问题,请告诉我。
@implementation UICollectionViewController
- (void)viewDidLoad
[super viewDidLoad];
// Do any additional setup after loading the view.
UICollectionViewFlowLayout *layout=[[UICollectionViewFlowLayout alloc] init];
layout.sectionInset = UIEdgeInsetsMake(20, 20, 20, 20);
layout.minimumInteritemSpacing = 0;
layout.minimumLineSpacing = 20;
[self setCollectionViewLayout:layout];
【讨论】:
这正是我正在做的.. 我想要的是将布局代码移动到 collectionviewcontroller.m 以使其看起来一致(将所有 UICollectionView 相关代码保存在一个地方) 您的意思是添加另一个布局代码?所以我会有两种布局(一种在推送视图之前,一种在 viewDidLoad 中)? 去掉push前添加的布局代码,只在viewDidLoad中添加 好的。那我应该如何调用collectionviewcontroller进行导航推送呢?转场? 通过布局nill以上是关于Objective C - 使用导航推送调用 UICollectionview的主要内容,如果未能解决你的问题,请参考以下文章
是否可以使用情节提要从 swift 类中调用 Objective c 视图控制器类?
未使用 firebase 和 Objective C 接收推送通知