2014-09-10 13 views
5

के बिना स्विफ्ट में कस्टम टेबल व्यू सेल, मैं आईओएस विकास और स्विफ्ट भाषा सीखने के लिए नया हूं, और स्टोरीबोर्ड/इंटरफेस बिल्डर के उपयोग के बिना कस्टम UITableViewCell बनाने का तरीका जानने का प्रयास कर रहा हूं। मैं स्विफ्ट कोड में सबकुछ पूरा करने में सक्षम होना चाहता हूं। अब तक, मैं केवल उन लोगों को ढूंढने में सक्षम हूं जो इंटरफ़ेस बिल्डर का उपयोग करते हैं।स्टोरीबोर्ड

मैं ऐसा करने में सक्षम होने के लिए क्या चाहते हैं एक फिर से प्रयोग करने योग्य सेल है कि किसी भी तालिका दृश्य में instantiated जा सकती है, पैदा करते हैं। जो मैं समझता हूं उससे मुझे उप-विचारों के साथ एक कस्टम सेल बनाने में सक्षम होना चाहिए, जो डेटा तालिका के आने वाले डेटा द्वारा सेट किया जा सकता है। सही?

अभी मेरे पास एक एम्बेडेड, उप-वर्गीकृत UITableViewController के साथ UINavigationController है। कुछ अन्य ट्यूटोरियल्स के बाद मैंने यह भी सीखा है कि स्ट्रक्चर कैसे बनाएं और टेबल व्यू सेल के लिए टेस्ट डेटा तैयार करें। लेकिन यह लगभग है जहां तक ​​मैं प्राप्त करने में सक्षम हूं।

// My Table View Controller 
class InventoryListViewController: MainTableViewController { 

    let viewTitle = "Inventory" 
    var inventoryItems = [InventoryItem]() 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     self.navigationItem.title = viewTitle.uppercaseString 

     self.inventoryItems = [ 
      InventoryItem(name: "White Bread", expiry: "2014-09-12"), 
      InventoryItem(name: "Mushrooms", expiry: "2014-09-15"), 
      InventoryItem(name: "Watermelon", expiry: nil), 
      InventoryItem(name: "Leftover Thai", expiry: "2014-09-15"), 
      InventoryItem(name: "Cheddar Cheese", expiry: "2014-09-12"), 
      InventoryItem(name: "Chicken Breasts", expiry: "2014-09-10"), 
      InventoryItem(name: "Paprika", expiry: nil), 
      InventoryItem(name: "Sour Cream", expiry: nil) 
     ] 

     // Right now this will fail without tableView:cellForRowAtIndexPath 
     self.tableView.reloadData() 
    } 

    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
     return self.inventoryItems.count 
    } 

} 

// Sub-classed UITableViewController 
class MainTableViewController: UITableViewController { 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     self.tableView.separatorColor = UIColor.clearColor() 
     self.tableView.contentInset = UIEdgeInsetsZero 
    } 

} 

// Data struct for cells 
struct InventoryItem { 
    let name: String 
    let expiry: String? 
} 

मैं स्विफ्ट को समझने के अभी भी बहुत नया है और वह शायद कारण है कि मैं इस विषय के लिए बहुत ज्यादा संसाधनों नहीं मिल सकता है, तो मैं मदद करने के लिए बहुत सराहना हो सकता है अगर किसी को भी किसी भी संकेत दिए गए है!

उत्तर

9

आप storyboard.Just बिना कस्टम कोशिकाओं के लिए नीचे दिए गए कोड का उपयोग रजिस्टर अपने class और tableViewController

//Cell.Swift 

import Foundation 
import UIKit 

class Cell : UITableViewCell{ 

    //Do whatever you want as exta customization 
} 

आपका नियंत्रक viewDidLoad

override func viewDidLoad() { 
    super.viewDidLoad() 

    // register your class with cell identifier 
    self.tableView.registerClass(Cell.self as AnyClass, forCellReuseIdentifier: "Cell") 
} 


//cellForRowAtIndexPath 

    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
     var cell:Cell? = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as? Cell 
     if cell == nil { 

      cell = Cell(style: UITableViewCellStyle.Default, reuseIdentifier: "Cell") 
     } 
     //configure your cell custom code 
     cell.textLabel?.text = @"Your Label Text" 
     return cell! 
    } 
+0

हम्म के साथ उपयोग कर सकते हैं। यह बहुत ही आशाजनक प्रतीत होता है, हालांकि जब मैं इसे आज़माता हूं, तो 'MainTableViewController' के साथ 'self.configureCell'' में त्रुटियां 'कॉन्फ़िगरेशनसेल' नामक सदस्य नहीं होती हैं। मैं यहाँ क्या गलत करूँगा? –

+0

मैं सिर्फ 'जोड़ लिया है confgureCell' शो कस्टम करने के लिए code.You इसे हटा सकते हैं और it.You की कोई आवश्यकता नहीं अपने खुद के कोड जो कुछ भी आप label.I की स्थापना की तरह क्या करना चाहते हैं लिख सकते हैं वहाँ संपादन कर रहा हूँ मेरी कोड सेट करना चाहते लेबल 'cell.textLabel? .text = @ "आपका लेबल टेक्स्ट" ' – codester

+0

ओह, मैं देखता हूं। धन्यवाद! ऐसा लगता है कि काम करता है! हालांकि, अगर आपको आगे की व्याख्या करने में कोई फर्क नहीं पड़ता है - मैं कस्टम सेल _within_ 'सेल' कक्षा में एक नया दृश्य (लेबल की तरह) कैसे जोड़ूं? मैंने [यह] (http://tny.cz/b83cf1bf) करने की कोशिश की लेकिन यह काम नहीं किया! –