【问题标题】:Objective C - Calling UICollectionview using navigation pushObjective C - 使用导航推送调用 UICollectionview
【发布时间】: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..以便用户了解他们必须用哪种语言给出答案

标签: ios objective-c uicollectionview uinavigationcontroller


【解决方案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
猜你喜欢
  • 2021-06-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-13
  • 1970-01-01
  • 1970-01-01
  • 2020-06-07
相关资源
最近更新 更多