我的应用上有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。
什么都没发生。
答案 0 :(得分:1)
2015年8月13日编辑
注意:这是管理故事板的方法。我没有包括如何填充数据和管理UITableView
答案 1 :(得分:1)
我查看了您发布到Dropbox的代码。这是您的代码出了什么问题:
您需要将主视图控制器嵌入导航控制器中。您可以通过单击故事板中的主视图控制器,然后单击编辑器 - >来完成此操作。嵌入 - >导航控制器选项。
您在cellForRowAtIndexPath方法中创建的单元格与您在故事板中附加segue的单元格不同。您可以像这样创建单元格:
let cell = UITableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: "Cell")
这实际上创建了一个具有重用标识符“Cell”的全新单元格。它没有附加的segue。要做到这一点:
let cell : UITableViewCell! = tableView.dequeueReusableCellWithIdentifier("Cell");
这将获取故事板中的单元格。 希望这会有所帮助。
答案 2 :(得分:1)
我认为您不需要两个viewController
,根据您的设计,您可以同时为Artist
和Album
控制器使用First tableView和Cell。
与使用tableView Delegate方法相比,您只需要两个DataSource
1个艺术家和另一个Album
一个布尔值来管理Current Visible DataSource。可以同时管理Artist和Album View。
例如:
假设我们的布尔值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
}