【问题标题】:n view controllers or n cellsn 个视图控制器或 n 个单元格
【发布时间】:2016-11-08 06:10:56
【问题描述】:

我有一个场景,当用户按下add 按钮时,他会转换为新的视图控制器vc2

根据他来自哪里,必填字段会发生变化。例如,如果他选择添加一个任务,他应该输入titledue datetime,但是当他选择添加一个人员时,他应该输入contact info.

最好有两个单独的视图控制器 (vc2a,vc2b) 还是一个表视图控制器 vc2 包含这两种情况的所有单元格的原型,但每次我调用 cellForRowAtIndexPath,我必须检查我从哪里来。

对于作为开发人员的我来说,在故事板中使用不同的视图控制器更容易,尤其是当 n>2 时,但如果这会对性能产生影响,事情就会改变。

提前致谢。

【问题讨论】:

    标签: ios objective-c uitableview uiviewcontroller


    【解决方案1】:

    根据我的观点,最好在单个视图控制器中执行此任务,前提是您在添加添加人员的任务后执行类似的下一步操作。

    而不是在 cellForRowAtIndexPath 中进行检查,因为它被多次调用,而是在 numberOfRowsInSection 中进行检查。

    在 numberOfRowsInSection 中做

    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    
      OMGOrderDetailsSectionType sectionType = [[self.tableViewLayoutArray objectAtIndex:section] integerValue];
    
      if (sectionType == 0) {
        if(self.isContactsType) {
          return 1;
        }
      }
      else if (sectionType == 1) {
        if(self.isTaskType) {
          return 1;
        }
      }
      return 0;
    }
    

    对于 cellForRow,Rest 保持不变,请配置两种类型的单元格。

    【讨论】:

    • 是的,下一个动作类似。我已经签入 numberOfRowsInSection,因为它不同。您的意思是(1)除了您的代码之外,在情节提要中我应该添加两个部分,其中 section1 包含任务单元,section2 包含人员单元? (2) 在 cellForRowAtIndexPath 中我可以忽略检查部分类型吗?
    • 是的。最终在 cellForRowAtIndexPath 中,您可以为这两个部分配置单元格,并且要显示的单元格将由 numberOfRowsInSection 管理。
    猜你喜欢
    • 1970-01-01
    • 2016-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-28
    • 1970-01-01
    • 2020-02-13
    • 1970-01-01
    相关资源
    最近更新 更多