UITableViewCell加载但不显示

时间:2016-04-03 21:01:06

标签: swift uitableview sdcalertview sdcalertcontroller

我尝试使用vanilla UITableView以编程方式将AlertController加载到自定义UITableViewCell中。所有UITableView显示和dataSource方法都被调用,但UITableViewCell不显示。

以下是代码:

class TemplateTypeSelection : NSObject, UITableViewDelegate, UITableViewDataSource {

    var completion : (type:TemplateType)-> Void = { (type) -> Void in }
    var alert : AlertController!

    let myIdentifier = "MyReuseIdentifier";

    func showDialog(completion:(type:TemplateType)-> Void) {

        self.completion = completion
        let alert = AlertController(title: "Select Template", message: nil)

        let tableView = UITableView(frame: CGRectMake(0, 0, 240, 300), style: .Plain)
        tableView.separatorInset = UIEdgeInsetsZero
        tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: myIdentifier)

        tableView.delegate = self
        tableView.dataSource = self

        tableView.backgroundColor = UIColor.clearColor()

        alert.contentView.addSubview(tableView)

        tableView.topAnchor.constraintEqualToAnchor(alert.contentView.topAnchor).active = true
        tableView.bottomAnchor.constraintEqualToAnchor(alert.contentView.bottomAnchor).active = true

        tableView.leftAnchor.constraintEqualToAnchor(alert.contentView.leftAnchor).active = true

        alert.present()

    }

     func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
        self.completion(type: TemplateType.CastAndCrew)
        alert.dismiss()
    }

     func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 5
    }

     func numberOfSectionsInTableView(tableView: UITableView) -> Int {
        return 1
    }

     func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCellWithIdentifier(myIdentifier, forIndexPath: indexPath)

        var name : String?
        switch(indexPath.row) {
             case 0 : name = TemplateType.CAPS.rawValue
             case 1 : name = TemplateType.CastAndCrew.rawValue
             case 2 : name = TemplateType.EASE.rawValue
             case 3 : name = TemplateType.EP.rawValue
             case 4 : name = TemplateType.Pixpay.rawValue
             default : name = "Empty"
        }

        cell.textLabel!.text = name;
        return cell;
    }

}

我检查了单元格的hidden属性,并检查以确保tableView与实例化和dataSource方法中的对象相同。

我所拥有的唯一其他线索是在调用所有cellForRowAtIndexPath方法之后的此控制台消息:

2016-04-03 16:49:27.150 TimecardBuddy[18816:1378060] no index path for table cell being reused
2016-04-03 16:49:27.151 TimecardBuddy[18816:1378060] no index path for table cell being reused
2016-04-03 16:49:27.151 TimecardBuddy[18816:1378060] no index path for table cell being reused
2016-04-03 16:49:27.151 TimecardBuddy[18816:1378060] no index path for table cell being reused
2016-04-03 16:49:27.151 TimecardBuddy[18816:1378060] no index path for table cell being reused

提前致谢!

0 个答案:

没有答案