标准UITableViewCell与我的自定义单元格

时间:2016-10-23 19:12:27

标签: ios swift xcode uitableview

这就是我所做的:我在笔尖上制作了一个比标准单元大得多的自定义单元格,并且背景为蓝色。

这是CommonListViewCell.xib

enter image description here

这是一个截图,它与正确的班级相关联:

enter image description here

这是这堂课:

import UIKit

class CommonListViewCell: UITableViewCell {
    @IBOutlet var background: UIView!
    @IBOutlet var titleLabel: UILabel!
    override func awakeFromNib() {

        super.awakeFromNib()
        titleLabel.font = UIFont(name: "roboto", size: titleLabel.font.pointSize)
        NSLog("CommonListViewCell font changed")
    }    
}

这是我的ViewController,它有这个TableView:

import UIKit

class CommonListFragment: BaseFragment,UIScrollViewDelegate, UITableViewDataSource, UITableViewDelegate{


    @IBOutlet var lvMain: UITableView!



    var prayerList = [PrayerDescription]()

    override func viewDidLoad() {
        super.viewDidLoad()

        self.lvMain.delegate = self;
         self.lvMain.dataSource = self;
         self.lvMain.registerNib(UINib(nibName: "CommonListViewCell", bundle: nil), forCellReuseIdentifier: "commonlistidentifier")
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

     convenience init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: NSBundle? , listType type:Int) {
        self.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
        switch type{
        case A.PRAYERS_TO_SAINTS:
            prayerList = PrayerDescriptionEngine.saints
            break
        case A.CANNONS_AND_ACATHISTS:
            prayerList = PrayerDescriptionEngine.acathistsAndCannons
            break
        default :
            prayerList = PrayerDescriptionEngine.allPurpose
            break
        }
    }

    override func nightCheck() {
        Utils.nightCheck([lvMain])
        lvMain.reloadData()
    }

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

        return prayerList.count
    }

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

        // Configure the cell...
        cell.textLabel?.text = prayerList[indexPath.row].name
        setLabelFont(cell.textLabel!)
        Utils.nightCheck([cell.textLabel!])
        return cell
    }

    func scrollViewWillBeginDragging(scrollView: UIScrollView) {
        parentVC.immedeateClose()
    }

    func tableView(tableView: UITableView,
                   didSelectRowAtIndexPath indexPath: NSIndexPath){
        parentVC.showActions(false)
        NSLog("You selected cell #\(prayerList[ indexPath.row].resId)!")
        let vc = AllPrayer(nibName :"AllPrayer", bundle: nil)
        _=PrayerDescriptionEngine()
        vc.setResId(prayerList[ indexPath.row].resId)
        self.presentViewController(vc, animated: true, completion: nil)
        tableView.deselectRowAtIndexPath(indexPath, animated: false)
    }



}

这是丑陋的结果:

enter image description here

所以,我的自定义表格单元明显落后于标准单元格。由于某种原因,标准单元格的数据填充正确,背面的自定义单元格具有"标签"文字就可以了。自定义单元格不是我指定的大小。

所以,请帮助我这个 - 我需要我的自定义单元格成为TableView中唯一的单元格,我的颜色和我的尺寸是我在xib中指定的

2 个答案:

答案 0 :(得分:1)

tablviewdelegate方法中,您必须访问自定义单元格的 cell.titlelabel ,才能访问当前tableview的 cell.textlabel 。而你正在设置细胞的背景颜色,这就是它重叠的原因。

您必须访问自定义单元格的属性,而不是当前单元格的属性。 所以,

cell.textlabel替换为cell.titlelabel

当您加载自定义单元格时,如果您有一个自定义单元格,则在storyboard中移除tableview的原型单元格。

希望这会起作用

答案 1 :(得分:0)

你的桌面视图是在storyborad吗? 选择您的tableview单元格,并在身份检查器中识别自定义单元格类。

enter image description here