动态原型细胞中的条件性猜测

时间:2015-04-21 10:24:11

标签: ios uitableview swift cell

另一个noob问题,但我真的可以在这个问题上提供一些帮助。我正在寻找一种方法,在动态原型表视图中有一个单元格列表,每个单元格都转到一个新的视图控制器。我设法做到这一点大约75%:/。基本上我已经使它工作但它总是首先加载第一个单元格,因为它的重用标识符被称为单元格。有没有办法让每个人只加载我想要的视图控制器? (以下代码)

由于 萨姆

编辑1:我已将代码更改为现在如下所示。但是,Alton Barnes视图控制器仍然会在您单击并想要查看的单元格前面加载。

import UIKit

class LocalAttractionsTableViewController: UITableViewController {
@IBOutlet weak var menuButton: UIBarButtonItem!

var Locations = ["Alton Barnes White Horse","Avebury","Barbury Castle","Bowood","Broad Town White Horse","Caen Locks","Cherhill White Horse","Corsham Court","Devices white Horse","Dragon Hill","Hackpen Hill White Horse","Iford Manor","Lacock","Longleat House","Longleat Safari Park","Marlborough white Horse","Pewsey White Horse","Salisbury Cathedral","Sheldon Manor","Silbury Hill","Stonehenge","The Barge Inn","Uffington White Horse","Westbury White Horse","West Kennet Long Barow","Wilton Windmill","Woodhenge"]

override func viewDidLoad() {
    super.viewDidLoad()
    // Side Menu
    if self.revealViewController() != nil {
        menuButton.target = self.revealViewController()
        menuButton.action = "revealToggle:"
        self.view.addGestureRecognizer(self.revealViewController().panGestureRecognizer())
    }
    tableView.backgroundColor = UIColor.grayColor()
    tableView.tableFooterView = UIView(frame:CGRectZero)
}
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
    return 27
}

override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return Locations.count
}

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! UITableViewCell

    cell.textLabel!.text = Locations[indexPath.row]
    cell.backgroundColor = UIColor.clearColor()
    return cell
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
}
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath)
{performSegueWithIdentifier(Locations[indexPath.row], sender:self);
}
}

2 个答案:

答案 0 :(得分:0)

您创建了一个名称为 Alton 的segue。而不是" Alton"你需要将Segue标识符重命名为 Alton Barnes White Horse ,稍后你需要这样做:

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {performSegueWithIdentifier(Locations[indexPath.row], sender:self);

答案 1 :(得分:0)

我猜你以错误的方式创建了segues。

如果您在InterfaceBuilder中从原型单元格中拖动了一个segue,则无需代码即可执行此segue。然后在您的代码中调用performSegueWithIdentifier(...),这会导致另一个segue触发。

您需要将InterfaceBuilder中tableViewController图标中的所有segue拖放到目标viewControllers,然后为它们提供标识符。