Ios 将8个表视图单元格编码为不同视图
我无法将Ios 将8个表视图单元格编码为不同视图,ios,iphone,xcode,uitableview,Ios,Iphone,Xcode,Uitableview,我无法将视图控制器链接到表视图单元格。基本上,我的表视图中有4个单元格,我希望单击时每个单元格都能显示一个单独的视图控制器 这是我的swift代码: import UIKit var orchard = ["Dog", "Cat", "Bird", "Fish"] var myIndex = 0 class AnimalList: UITableViewController { // MARK: - Table view data source override func
视图控制器
链接到表视图单元格
。基本上,我的表视图中有4个单元格
,我希望单击时每个单元格都能显示一个单独的视图控制器
这是我的swift代码:
import UIKit
var orchard = ["Dog", "Cat", "Bird", "Fish"]
var myIndex = 0
class AnimalList: UITableViewController {
// MARK: - Table view data source
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
// #warning Incomplete implementation, return the number of rows
return orchard.count
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
cell.textLabel?.text = orchard[indexPath.row]
return cell
}
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)
{
myIndex = indexPath.row
performSegue(withIdentifier: "segue", sender: self)
}
}
这是我的故事板,您可以看到我有4个视图控制器
,我想连接到4个表视图单元格
。
注:我的表视图控制器
已嵌入导航控制器
中
我该怎么做?谢谢大家! 通过按住ctrl键并单击鼠标右键,然后从“表视图控制器”拖动到每个视图控制器,为4个视图控制器中的每一个创建一个序列。为序列提供标识符(例如“TableToViewController1”、“TableToViewController2”等)
然后在您的中选择Rowat
执行以下操作:
var segueIdentifier = ""
switch(indexPath.row) {
case 0: // first cell is selected
segueIdentifier = "TableToViewController1"
case 1:
segueIdentifier = "TableToViewController2"
case 2:
segueIdentifier = "TableToViewController3"
case 3:
segueIdentifier = "TableToViewController4"
}
performSegue(withIdentifier: segueIdentifier, sender: self)
通过按住ctrl键并单击鼠标右键,然后从“表视图控制器”拖动到每个视图控制器,为4个视图控制器中的每个创建一个序列。为序列提供标识符(例如“TableToViewController1”、“TableToViewController2”等)
然后在您的中选择Rowat
执行以下操作:
var segueIdentifier = ""
switch(indexPath.row) {
case 0: // first cell is selected
segueIdentifier = "TableToViewController1"
case 1:
segueIdentifier = "TableToViewController2"
case 2:
segueIdentifier = "TableToViewController3"
case 3:
segueIdentifier = "TableToViewController4"
}
performSegue(withIdentifier: segueIdentifier, sender: self)
你能做的就是在你的内心深处
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)
{
myIndex = indexPath.row
performSegue(withIdentifier: "segue", sender: self)
}
func
您可以检查它是哪个索引,并基于该显示所需的viewController
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)
{
myIndex = indexPath.row
if let animal = orchard[indexPath.row] as String? {
if animal == "dog" {
performSegue(withIdentifier: "dogViewController", sender: self)
}
}
}
在情节提要中
您可以从viewController
创建一个segue
到所有urviewController
并用dogViewController
等名称命名这些片段。您可以在
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)
{
myIndex = indexPath.row
performSegue(withIdentifier: "segue", sender: self)
}
func
您可以检查它是哪个索引,并基于该显示所需的viewController
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)
{
myIndex = indexPath.row
if let animal = orchard[indexPath.row] as String? {
if animal == "dog" {
performSegue(withIdentifier: "dogViewController", sender: self)
}
}
}
在<代码>情节提要<代码>中,您将从<代码>视图控制器<代码>到所有ur<代码>视图控制器<代码>创建一个<代码>分段,并使用类似<代码>dogViewController<代码>等的名称命名分段。为四个<代码>视图控制器提供一个分段,并将其命名为<代码>vc1Segue
,vc2Segue
,vc3Segue
,vc3Segue
并更改您的didSelectRowAt
方法,如下所示
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)
{
myIndex = indexPath.row
switch myIndex {
case 0:
performSegue(withIdentifier: "vc1Segue", sender: self)
case 1:
performSegue(withIdentifier: "vc2Segue", sender: self)
case 2:
performSegue(withIdentifier: "vc3Segue", sender: self)
case 3:
performSegue(withIdentifier: "vc4Segue", sender: self)
default:
print("Index greater than vcs")
}
}
为四个视图控制器指定一个序列,并将其命名为vc1Segue
,vc2Segue
,vc3Segue
,vc3Segue
并更改您的didSelectRowAt
方法,如下所示
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)
{
myIndex = indexPath.row
switch myIndex {
case 0:
performSegue(withIdentifier: "vc1Segue", sender: self)
case 1:
performSegue(withIdentifier: "vc2Segue", sender: self)
case 2:
performSegue(withIdentifier: "vc3Segue", sender: self)
case 3:
performSegue(withIdentifier: "vc4Segue", sender: self)
default:
print("Index greater than vcs")
}
}
将您的TableViewController
嵌入到Navigation Controller
中(很可能您已经这样做了)
选择标有黄色标记的TableViewController
单击鼠标右键
按住并将其放置到视图控制器中,松开并选择Manual Segue->Show
现在选择segue并使用唯一标识符重命名它。对于每个视图控制器,重复步骤2和3
更新tableView didSelectRowAt
delegate函数,如下所示
func tableView(tableView:UITableView,在indexPath:indexPath中取消行)
{
performsgue(带标识符:orchard[indexPath.row],发送方:self)
}
将您的TableViewController
嵌入到Navigation Controller
中(很可能您已经这样做了)
选择标有黄色标记的TableViewController
单击鼠标右键
按住并将其放置到视图控制器中,松开并选择Manual Segue->Show
现在选择segue并使用唯一标识符重命名它。对于每个视图控制器,重复步骤2和3
更新tableView didSelectRowAt
delegate函数,如下所示
func tableView(tableView:UITableView,在indexPath:indexPath中取消行)
{
performsgue(带标识符:orchard[indexPath.row],发送方:self)
}
刚才我按照您的要求完成了演示项目,它工作得非常好
第1步:准备故事板,如下图所示
步骤2:如下图所示,为相应的viewController提供故事板标识符dogID、catID、birdID和fishID。
步骤3:在拱形数组的正下方声明一个具有上述标识符的数组
var storyboardIds = ["dogID","catID","birdID","fishID"]
步骤4:修改didSelectRowAt方法,如下面的代码段所示
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)
{
myIndex = indexPath.row
if let vc = storyboard?.instantiateViewController(withIdentifier: storyboardIds[myIndex]) {
self.navigationController?.pushViewController(vc, animated: true)
}
}
刚才我按照您的要求完成了演示项目,它工作得非常好
第1步:准备故事板,如下图所示
步骤2:如下图所示,为相应的viewController提供故事板标识符dogID、catID、birdID和fishID。
步骤3:在拱形数组的正下方声明一个具有上述标识符的数组
var storyboardIds = ["dogID","catID","birdID","fishID"]
步骤4:修改didSelectRowAt方法,如下面的代码段所示
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)
{
myIndex = indexPath.row
if let vc = storyboard?.instantiateViewController(withIdentifier: storyboardIds[myIndex]) {
self.navigationController?.pushViewController(vc, animated: true)
}
}
感谢您提供如此详细的教程,它工作得非常好!很高兴听到,它帮助了你:)@qin谢谢你这么详细的教程,它工作得非常好!很高兴听到,这对你很有帮助:)@Qin