【问题标题】:Swift: Disclosure Indicator not showing if SegueSwift:如果 Segue 不显示披露指示器
【发布时间】:2018-07-01 18:41:20
【问题描述】:

我正在使用带有 Tableview 的 ViewController。

如果我激活“披露指示器”并进行转场, 披露图标未显示。

如果我评论该行: self.myTable.registerClass(UITableViewCell.self, forCellReuseIdentifier: "myTableCell"),披露指示符正在显示,但 segue 不再起作用。

这是我的代码 sn-ps:

override func viewDidLoad() {
    self.myTable.registerClass(UITableViewCell.self, forCellReuseIdentifier: "myTableCell")
}

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cellIdentifier = "myTableCell"
    var cell = self.myTable.dequeueReusableCellWithIdentifier(cellIdentifier)

    if cell == nil {
        cell = UITableViewCell(style: UITableViewCellStyle.Subtitle, reuseIdentifier: cellIdentifier)
    }

    let resultCarForList_data = resultCarNameForList[indexPath.row]
    cell!.textLabel?.text = resultCarForList_data

    return cell!
}

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {

    selectedCarID = resultCarIDList[indexPath.row]
    performSegueWithIdentifier("klickCarDetail", sender: self)

}

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {

    if(segue.identifier == "klickCarDetail") {
        let DestViewController : CarDetail = segue.destinationViewController as!CarDetail
        DestViewController.passedCarID = selectedCarID
    }
}

问题可能出在哪里?

【问题讨论】:

    标签: ios swift uitableview segue


    【解决方案1】:

    要显示披露指示器,请设置accessoryType 属性:

    if cell == nil {
        cell = UITableViewCell(style: UITableViewCellStyle.Subtitle, reuseIdentifier: cellIdentifier)
        cell.accessoryType = UITableViewCellAccessoryType.DisclosureIndicator
    }
    

    对于 Swift 4:

    cell.accessoryType = UITableViewCellAccessoryType.disclosureIndicator
    

    至于为什么 segue 不起作用:在这种情况下,您可以使用两种类型的 segue。一种是使UITableViewCell成为segue的起源(在故事板中);在这种情况下,Interface Builder 将自动添加披露指示符。在这种情况下不需要调用performSegueWithIdentifier("klickCarDetail", sender: self)(也不需要调用registerClass);当用户选择行时,segue 将自动触发。您当前正在使用的另一种方法是使用从一个视图控制器到另一个视图控制器的手动转场。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-23
      • 2019-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多