Sono nuovo nell'apprendimento dello sviluppo iOS e del linguaggio Swift e ho cercato di capire come creare un UITableViewCell
personalizzato senza l'utilizzo di Storyboards/Interface Builder. Mi piacerebbe essere in grado di realizzare qualsiasi cosa nel codice Swift. Finora, sono stato in grado di trovare solo quelli che fanno uso di Interface Builder.Cella di visualizzazione tabella personalizzata in Swift, senza Storyboard
Quello che vorrei essere in grado di fare è creare una cella riutilizzabile che può essere istanziata in qualsiasi vista tabella. Da quanto ho capito dovrei essere in grado di creare una cella personalizzata con sotto-viste, i cui dati possono essere impostati dai dati in entrata della vista tabella. Destra?
In questo momento ho un UINavigationController
con un UITableViewController
incorporato in una sottoclasse. Seguendo alcuni altri tutorial ho anche imparato come creare una Struct e preparare i dati di test per la cella di visualizzazione tabella. Ma questo è quanto ho potuto ottenere.
// 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?
}
Capisco Swift è ancora molto nuovo e questo è probabilmente il motivo non riesco a trovare troppe risorse per questo argomento, quindi se qualcuno ha qualche puntatori sarei molto riconoscente per l'aiuto!
Hmm. Questo sembra molto promettente, anche se quando lo provo, errori in 'self.configureCell' con' 'MainTableViewController' non hanno un membro chiamato 'configureCell''. Cosa farei di sbagliato qui? –
Ho appena aggiunto 'confgureCell' affinché show esegua codice personalizzato. Puoi rimuoverlo e non è necessario. Puoi scrivere il tuo codice come vuoi impostare l'etichetta. Sto modificando il mio codice come per impostare label 'cell.textLabel? .text = @" Il tuo testo dell'etichetta "' – codester
Ohh capisco. Grazie! Questo sembra funzionare! Tuttavia, se non ti dispiace spiegare ulteriormente - come aggiungo una nuova vista (come un'etichetta) alla cella personalizzata _within_ la classe 'Cell'? Ho provato a fare [questo] (http://tny.cz/b83cf1bf) ma non ha funzionato! –