Xcode 8表格查看单元格到不同的视图

时间:2017-07-05 04:34:50

标签: ios iphone xcode uitableview

我在将var Count, Index, N: Int64; .... Count := Length(BigArray); Index := 0; while Count > 0 do begin N := Min(Count, 8192); stream.WriteBuffer(BigArray[Index], N*SizeOf(BigArray[0])); inc(Index, N); dec(Count, N); end; 与表格视图view controllers关联时遇到问题。基本上我的cells中有4个cells,并且我希望每个单元格在Table View点击时单独present

以下是我的快捷代码:

view controller

这是我的故事板,你可以看到我有4 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 view controllersstoryboard

PS:我的table view cells已嵌入table view controller

我该怎么做?谢谢!

5 个答案:

答案 0 :(得分:2)

为四个ViewControllers提供一个segue,并将其命名为vc1Seguevc2Seguevc3Seguevc3Segue

并更改您的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")
        }
}

答案 1 :(得分:2)

  1. 将您的TableViewController嵌入Navigation Controller(很可能,您已经做过)。
  2. enter image description here

    1. 选择黄色标记TableViewController点击Right Mouse按住并将其放入视图控制器,释放并选择手动搜索 - >显示
    2. enter image description here

      1. 现在选择segue并使用唯一标识符重命名。对于每个视图控制器重复步骤2& 3。

        enter image description here

      2. 更新tableView didSelectRowAt委托功能,如下所示。

      3. func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath) { performSegue(withIdentifier: orchard[indexPath.row], sender: self) }

答案 2 :(得分:2)

刚才我完成了你的要求的演示项目,它完美地运作。

步骤1:准备好你的故事板,如下图所示。

enter image description here

步骤2:将故事板标识符作为dogID,catID,birdID,fishID提供给相应的viewController,如下图所示。 enter image description here step3:在拱形数组的正下方声明一个带有上述标识符的数组。

$data = http_build_query(array("enable"=> 1));

if( $curl = curl_init() ) {
    curl_setopt($curl, CURLOPT_URL, BASE_URL .'users/2');
    curl_setopt($curl, CURLOPT_RETURNTRANSFER,true);    
    curl_setopt($curl, CURLOPT_PUT, true); // execution time 1.5 min
    //curl_setopt ($ curl, CURLOPT_CUSTOMREQUEST, "PUT"); - execution time 1 sec
    curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
    $out = json_decode(curl_exec($curl));
    curl_close($curl);      
}

第4步:修改didSelectRowAt方法,如下面的代码片段所示。

var storyboardIds = ["dogID","catID","birdID","fishID"]

答案 3 :(得分:1)

通过ctrl +右键单击并从表视图控制器拖动到每个视图控制器,为4个视图控制器中的每一个创建一个segue。给segue一个标识符(例如“TableToViewController1”,“TableToViewController2”等)

然后在你的didSelectRowAt做类似的事情:

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)

答案 4 :(得分:0)

你可以在你的

中做些什么
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)
{
    myIndex = indexPath.row
    performSegue(withIdentifier: "segue", sender: self)
}

func您可以根据index所需的present来查看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)
        }
    }
}

storyboard中,您可以从segue创建一个viewController到{ur了viewControllers,并使用dogViewController之类的内容命名segues。