2016-10-26 11 views
6

मैंने पहले से ही इस विषय के बारे में कुछ वीडियो पढ़े और देखे लेकिन मैं इसे काम नहीं कर सकता। मैं स्टोरीबोर्ड की बजाय xib से सेल की कोशिश कर रहा हूं।स्विफ्ट के साथ ज़िब से सेल 3

यह मेरा व्यू कंट्रोलर है (जहां मेरे पास टेबल व्यू है)।

import UIKit 

class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource { 

    @IBOutlet var tableView: UITableView! 


    override func viewDidLoad() { 
     super.viewDidLoad() 

     // Do any additional setup after loading the view, typically from a nib. 
    } 

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

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

     return 5 
    } 

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 

     let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! CellTableView 

     cell.test.text = "A"; 

     return cell; 

    } 

} 

यह मेरा CellTableView (वर्ग जहां मैं अपने सेल है):

import UIKit 

class CellTableView: UITableViewCell { 

    override func awakeFromNib() { 
     super.awakeFromNib() 
     // Initialization code 
    } 

    @IBOutlet var teste: UILabel! 

    override func setSelected(_ selected: Bool, animated: Bool) { 
     super.setSelected(selected, animated: animated) 

     // Configure the view for the selected state 
    } 

} 

मैं हमेशा स्टोरीबोर्ड पर तालिका दृश्य के अंदर तालिका देखें सेल का इस्तेमाल किया, लेकिन मैं एक XIB दृष्टिकोण की कोशिश करना चाहते अभी व।

मैंने सेल सेल XIB पर पहचानकर्ता को dequeueReusableCell विधि के साथ कॉल करने के लिए जोड़ा।

मैं क्या गलत कर सकता था? मैंने डेटा स्रोत और तालिका दृश्य के को आउटलेट करने की कोशिश की लेकिन मुझे एक त्रुटि मिली (और मुझे लगता है कि यह सही कदम नहीं है)।

उत्तर

33

आपको अपनी निब ऑब्जेक्ट पंजीकृत करने की आवश्यकता है।

viewDidLoad() में:

let nib = UINib(nibName: "nameOfYourNibFile", bundle: nil) 

tableView.register(nib, forCellReuseIdentifier: "yourIdentifier") 

तुम भी वर्गों की संख्या वापस जाने के लिए की जरूरत है:

सभी की
func numberOfSections(in tableView: UITableView) -> Int { 
    return 1 
} 
+0

आप सेल पहचानकर्ता, सही मतलब है? तो ViewController में मैं सिर्फ डाल करने के लिए है: जाने निब = UINib (nibName: "सेल", बंडल: शून्य) tableView.register (निब, forCellReuseIdentifier: "सेल") ? यह काम नहीं किया। मेरी कोशिकाएं अभी भी खाली हैं। – Adrian

+2

क्षमा करें, मैं वास्तव में आपके निब फ़ाइल का नाम था। शायद आपके मामले में "CellTableView" होना चाहिए ... – eLwoodianer

+0

मैं देखता हूं। धन्यवाद सैम। अब यह काम कर रहा है। – Adrian

2

सबसे पहले, आप अपने निब वस्तु रजिस्टर करने के लिए है।

yourTable?.register(UINib(nibName: "yourCustomCell", bundle: nil), forCellReuseIdentifier: "cellIdentifier")