[UITableViewCell] < - [genericCell] < - [CELL1], [CELL2], [CELL3]स्विफ्ट। UITableViewCell पदानुक्रम के समुचित प्रारंभ
नमस्कार। कृपया उपरोक्त पदानुक्रम की कल्पना करें। मेरे कोड में मेरे पास ऑब्जेक्ट्स बिल्कुल genericCell
टाइप नहीं हैं, लेकिन यह वर्ग कुछ गुण साझा करता है।
मेरे कोड में इनसाइट का कौन सा डिज़ाइन होना चाहिए? Cell1
के बारे में
override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
//my stuff (initializing shared properties)
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
लेकिन क्या: मैं genericCell के लिए संरचना निम्नलिखित है? Cell1
इंस्टेंस के प्रारंभ के माध्यम से "मेरी सामग्री" संचालन के लिए genericCell
में init(style: UITableViewCellStyle, reuseIdentifier: String?)
का उपयोग कैसे कर सकता हूं? अब वे प्रदर्शन नहीं करते हैं।
संपादित
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let typeOfCell = FbDataManager.sharedInstance.posts[indexPath.row][FbDataManager.sharedInstance.typeParameter] as! String
switch typeOfCell {
case self.linkTypeOfPost:
var cell = tableView.dequeueReusableCellWithIdentifier(self.linkCellIdentifier) as? FbLinkPostViewCell
if cell == nil {
cell = FbLinkPostViewCell.init(style: .Default, reuseIdentifier: self.linkCellIdentifier)
}
//...
हाय फिर से। यह टेबल व्यू के प्रतिनिधि से हिस्सा है, बीटीडब्ल्यू मैंने अपने कोड में अभिनव के इनिट्स की प्रतिलिपि बनाई है और फिर वे लोग काम नहीं कर रहे हैं। (कंसोल के लिए कोई आउटपुट नहीं)
धन्यवाद! मेरे पास आपके कोड में जैसे ही लिखा है, तो 'if' ब्लॉक नहीं है। तो क्या 'dequeueReusableCellWithIdentifier' 'if'' शाखा में 'init' की तरह आमंत्रित करता है? – drewpts
नहीं। पुन: प्रयोज्य कोशिकाओं का विचार यह है कि वे केवल एक बार शुरू किए जाते हैं और फिर पुन: उपयोग किए जाते हैं। तो 'init' केवल तभी बुलाया जाता है जब सेल पहले शुरू नहीं किया गया था (यानी अगर हम 'if' की सामग्री को दबाते हैं)। आपको पहचानकर्ता के साथ अपने सेल वर्गों को अलग करना होगा: जांचें कि आपको किस श्रेणी के लिए इंडेक्स की आवश्यकता है, फिर जांचें ("सेल 1", "सेल 2" और "सेल 3" जैसे अद्वितीय पहचानकर्ता के साथ) यदि वह विशेष प्रकार 'deqeue' हो सकता है डी या शुरू करने की जरूरत है। यदि एक ही कक्षा के कई सेल्स हैं (उदा। 3 "सेलऑन") जिन्हें अलग-अलग कॉन्फ़िगर करने की आवश्यकता है, तो मैं इसके लिए एक नई विधि तैयार करूंगा। – Gamma
उत्तर में कुछ कोड जोड़ा गया है जो आशा करता है कि यह दृष्टिकोण आपके सेटअप के साथ काम करेगा। – Gamma