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 接收推送通知

iOS Objective C - 与 UI 相关

Objective C-推送通知不适用于 Cloudkit

对故事板和以编程方式推送 ios Objective C 感到困惑

推送时出现大标题导航栏和搜索栏的错误