这就是我所做的:我在笔尖上制作了一个比标准单元大得多的自定义单元格,并且背景为蓝色。
这是CommonListViewCell.xib
这是一个截图,它与正确的班级相关联:
这是这堂课:
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)
}
}
这是丑陋的结果:
所以,我的自定义表格单元明显落后于标准单元格。由于某种原因,标准单元格的数据填充正确,背面的自定义单元格具有"标签"文字就可以了。自定义单元格不是我指定的大小。
所以,请帮助我这个 - 我需要我的自定义单元格成为TableView中唯一的单元格,我的颜色和我的尺寸是我在xib中指定的
答案 0 :(得分:1)
在tablviewdelegate
方法中,您必须访问自定义单元格的 cell.titlelabel ,才能访问当前tableview的 cell.textlabel 。而你正在设置细胞的背景颜色,这就是它重叠的原因。
您必须访问自定义单元格的属性,而不是当前单元格的属性。 所以,
将cell.textlabel
替换为cell.titlelabel
当您加载自定义单元格时,如果您有一个自定义单元格,则在storyboard中移除tableview的原型单元格。
希望这会起作用
答案 1 :(得分:0)