【问题标题】:Using PresentViewController instead of storyboard doesn't display the cell data?使用 PresentViewController 代替情节提要不显示单元格数据?
【发布时间】:2013-12-05 06:56:51
【问题描述】:

如果 Storyboard 调用了我正在尝试创建的特定 tableview 的单元格数据,则它会显示文本和图像,但如果使用 PresentViewController(没有 storyboard)则不会。单元格仍然是可点击的,并导致另一个带有图像的视图,但实际 tableview 上的图像和文本没有显示。

这就是我的 TableViewController 的创建方式:

TableViewController *myVC = [[TableViewController alloc] initWithDismissButton];
[self presentViewController:myVC animated:YES completion:nil];

【问题讨论】:

  • 你是如何创建你正在展示的视图控制器的?此外,您是否在呈现视图控制器的 prepareForSegue 方法中执行任何代码?如果您使用 presentViewController:... 则不会执行
  • 我粘贴了一些代码,向您展示了它是如何创建的。我这里没有使用任何 segues,你必须这样做吗?
  • initWithDismissButton 中的代码是什么?
  • self= [self init];返回自我;

标签: ios iphone objective-c uitableview storyboard


【解决方案1】:

如果您以这种方式创建视图控制器,则不会加载情节提要中的内容。使用[self.storyboard instantiateViewControllerWithIdentifier:@"tableViewControllerIdentifier"];

【讨论】:

    【解决方案2】:

    正如其他发帖人所建议的那样,问题很可能是 segue 触发了您的 prepareForSegue 方法。在 storyboard segues 中,您可以在其中配置目标视图控制器,然后再显示它。

    在您上面发布的代码中,您将在 alloc/init 调用和 presentViewController 调用之间插入您的配置。

    所以如果你需要将一个数组传递给表格视图控制器作为模型,代码可能如下所示:

    TableViewController *myVC = [[TableViewController alloc] initWithDismissButton];
    myVC.tableDataArray = arrayForTableVC;
    [self presentViewController:myVC animated:YES completion:nil];
    

    【讨论】:

      【解决方案3】:

      在手动分配视图控制器之间使用情节提要时存在一些差异:
      • 在故事板中:使用initWithCoder:初始化视图控制器
      • 手动:您调用的任何init 方法。对于表视图控制器,您应该调用 initWithStyle:

      重复使用单元格时也有很大的不同:
      • 在情节提要中:您在界面生成器中设计了一个原型单元,您必须给它一个单元标识符。此单元格将使用tableView:cellForRowAtIndexPath: 中的此标识符进行分配。
      • 要手动创建单元格,您必须在初始化期间选择样式或创建所有自定义控件并将它们作为子视图添加到单元格的contentView 属性中(除非您使用UITableViewCell 的子类,然后您必须在子类初始化程序中执行此操作)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-04-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多