TableView 单元格单击到另一个 TableView

Posted

技术标签:

【中文标题】TableView 单元格单击到另一个 TableView【英文标题】:TableView Cell click to another TableView 【发布时间】:2015-08-07 17:01:18 【问题描述】:

我的应用上有tableView。我想单击一个单元格并转到另一个tableView。例如艺术家列表,然后是专辑列表。

通常我只是将“Prototype Cells”拖到另一个视图控制器。但是什么也没发生。

这是我的代码:

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int 

    return NumberOfArtists


func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell 

    let cell = UITableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: "Cell")

    print(NameOfArtist)

    cell.textLabel?.text = NameOfArtist[indexPath.row]
    cell.accessoryType = UITableViewCellAccessoryType.DisclosureIndicator

    return cell


这是我的故事板:

更新:我已经从 TableView(背面的那个)中删除了 segue。还是不行。

步骤

1 - 创建一个 tableView 并添加源和委托。 2 - 创建另一个 View Controller 并添加一个 tableView。 3 - 创建从第一个原型单元到第二个 tableView 的 segue。

什么都没有发生。

【问题讨论】:

我认为您错误地将 push segue 链接到同一个视图控制器。 你是对的......我已经删除了它。但它仍然无法正常工作。有什么想法吗? 好的,伙计。只需将您的项目放在保管箱上。它可能是一些愚蠢的简单但很难在帖子中发现的东西。 dropbox.com/sh/zuxepe7d1bto2oi/AAA70kltUDtC3vA6MMTmnnS8a?dl=0 【参考方案1】:

我查看了您发布到 Dropbox 的代码。这是您的代码有什么问题:

    您需要将主视图控制器嵌入到导航控制器中。您可以通过单击情节提要中的主视图控制器,然后单击编辑器-> 嵌入 -> 导航控制器选项来执行此操作。

    您在 cellForRowAtIndexPath 方法中创建的单元格与您在情节提要中附加 segue 的单元格不同。你像这样创建单元格:

     let cell = UITableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: "Cell")
    

这实际上创建了一个具有重用标识符“Cell”的全新单元格。它没有附加segue。为此:

let cell : UITableViewCell! = tableView.dequeueReusableCellWithIdentifier("Cell");

这将在您的故事板中获取单元格。 希望这会有所帮助。

【讨论】:

【参考方案2】:

于 2015 年 8 月 13 日编辑

    您必须为艺术家创建一个您提到的 UITableView。 您创建它时需要另一个 UITableView 用于专辑的艺术家。 您只需要将segue 从原型单元或所有静态单元链接到UITableView,它应该可以工作。

注意:这是管理故事板的方法。我没有包括如何填充数据和管理 UITableView

【讨论】:

我已经删除了那个segue。我需要的是一个带有单元格的表格视图。当我单击一个单元格时,我会转到另一个 TableView 或 ViewController。我可以在没有 TableView 的情况下做到这一点。但是当我添加 TableView 和单元格并尝试创建 segue 时,什么也没有发生。谢谢 请看我编辑的图片。这就是我所做的。仍然不去 Albuns 视图。 您是否为原型单元添加了数据?否则是正常的,它不起作用。如果你愿意,我可以更新我的代码 是的,两个单元格都有一个字符串数组。我已将代码上传到 Dropbox。见上面的评论。【参考方案3】:

我认为您不需要两个 viewController,根据您的设计,您可以将 First tableView 和 Cell 用于 ArtistAlbum 控制器。

您只需要两个DataSource 1 用于艺术家,另一个用于Album 和一个管理当前可见数据源的布尔值。而不是使用 tableView 委托方法,您可以同时管理艺术家和专辑视图..

例如: 假设我们的布尔值NameisArtistisArtist = true 对于Artist ViewisArtist = false 对于Album View

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int 
     return isartist ? ArtistDataSource.Count : AlbumDataSource.count


func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell 

    let cell = UITableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: "Cell")

 if isArtist 
    cell.textLabel?.text = ArtistDataSource[indexPath.row]
 
else 
    cell.textLabel?.text = AlbumDataSource[indexPath.row]
 


    cell.accessoryType = UITableViewCellAccessoryType.DisclosureIndicator

    return cell




func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) 

          if isArtist 
            isartist.toggle()
            yourtableView.reloadData
          
          else 
       //Do what you wish for Album tableView Selection
      


func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat 
        return isartist ? 70 : 100
    

【讨论】:

以上是关于TableView 单元格单击到另一个 TableView的主要内容,如果未能解决你的问题,请参考以下文章

单击tableview行后如何导航到另一个视图

Objective-C 链接两个 Tableview

tvOS tableView 从一个单元格到另一个单元格平滑滚动

无法显示跨到另一个 tableview 的 Tableview 和自定义表格单元格

将超过一半的单元格移动到另一个部分时,Tableview 崩溃

在 tableView 中获取 TextField 标识