【问题标题】:How to make each tableview cell present different detail view controller如何使每个 tableview 单元格呈现不同的详细视图控制器
【发布时间】:2015-07-20 09:07:07
【问题描述】:

我是 swift 新手,但在过去的两个月里我学到了很多东西。 我正在构建一个应用程序,您在表格视图中有一个产品列表,当按下一个单元格时,它会向您展示一个新的视图控制器,其中页面视图显示产品的类别。 我设法制作了所有内容,除非我单击不同的单元格时,它会显示相同的页面视图控制器。 所以我的问题是如何让每个单元格呈现一个不同的页面视图控制器,其中包含有关产品的不同详细信息?

这是我的 didSellectRowAtIndexPath 代码:

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath!)
{

    var detailedViewController: ViewController = self.storyboard?.instantiateViewControllerWithIdentifier("ViewController") as ViewController


    self.presentViewController(detailedViewController, animated: true, completion: nil)
}

我可以提供有关代码的更多信息,只需告诉我对您理解我的想法有何帮助即可。

提前致谢

【问题讨论】:

  • 您可以应用 if else if 条件来检查在 didSelectRowAtIndexPath 中单击了哪一行并相应地呈现视图。检查 indexPath.row..!
  • 要么添加一个公共数据源相关属性以在相同类型的实例detailedViewController 上设置,要么根据indexPath 参数初始化detailedViewController

标签: ios swift uitableview


【解决方案1】:

从问题看来,您想要展示相同的页面视图控制器,只有不同的细节。

在情节提要中为细节控制器创建一个segue,并在prepareForSegue 中配置它。假设您有一个数据数组productsArray,并将您的产品作为数据源:

let detailController = segue.destinationViewController as! DetailController
let cell = sender as! UITableViewCell // or your cell subclass
let point = sender.convertPoint(CGPointZero, toView:tableView)
let indexPath = tableView.indexPathForRowAtPoint(point)
detailController.product = productArray[indexPath.row]!

显然,您的详细信息控制器将具有 product 属性,并将使用来自该对象的详细信息配置其 UI。

【讨论】:

  • 是的,我就是这个意思,非常感谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-13
  • 1970-01-01
相关资源
最近更新 更多