2016-10-23 3 views
0

Вот что я сделал: я создал большую пользовательскую ячейку в nib, которая намного больше стандартной ячейки и имеет синий фон.Стандарт UITableViewCell перекрывает мою пользовательскую ячейку

Здесь, 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

+0

Вы устанавливаете все данные на ячейки 'textLabel' который является ярлыком, созданный' UITableViewCell' базового класса. Ваш ярлык называется 'titleLabel', поэтому вы должны использовать его. – dan

+0

@ дан спасибо! но размер ячейки все еще не мой, он по-прежнему является стандартным размером – user2976267

+0

@ user2976267, размер вашей ячейки отличается от того, что вы не изменились в своем 'tableView' в' Interface Builder'. Ваш 'tableView' использует размер ячейки по умолчанию' 44pt'. Вам нужно изменить его на вкладке 'Size Inspector' в правой панели Xcode. И если вы хотите, чтобы размер вашего файла соответствовал длине текста, вы должны реализовать метод heightForRowAtIndexPath. – Adeel

ответ

0

Ваш вид таблицы в storyborad? Выберите ячейку tableview, а в инспекторе идентификации узнайте пользовательский класс ячеек.

enter image description here

1

В tablviewdelegate методе вы ¨R доступ cell.textlabel текущего Tableview в то время как у вас есть доступ к cell.titlelabel вашей пользовательской ячейки. И вы устанавливаете цвет фона ячейки, поэтому он перекрывает его.

Вам необходимо получить доступ к свойствам пользовательской ячейки, а не текущей ячейки. Так,

Заменить cell.textlabel с cell.titlelabel

И как вы ¨R загрузки пользовательских ячейки удалить прототип ячейки Tableview в раскадровке, если у вас есть.

Надеется, что это будет работать

Смежные вопросы