Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 将8个表视图单元格编码为不同视图_Ios_Iphone_Xcode_Uitableview - Fatal编程技术网

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
到所有ur
viewController
并用
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