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 用于 Artist
和 Album
控制器。
您只需要两个DataSource
1 用于艺术家,另一个用于Album
和一个管理当前可见数据源的布尔值。而不是使用 tableView 委托方法,您可以同时管理艺术家和专辑视图..
例如:
假设我们的布尔值Name
是isArtist
和isArtist = true
对于Artist View
和isArtist = 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的主要内容,如果未能解决你的问题,请参考以下文章
tvOS tableView 从一个单元格到另一个单元格平滑滚动
无法显示跨到另一个 tableview 的 Tableview 和自定义表格单元格