Ho un UITableView statico, il contenuto di ogni cella che ho creato nello storyboard, ma ho bisogno di cambiare texLabels di alcune celle a livello di codice durante il runtime. Come posso farlo?Cambia testo in celle statiche in UITableView
risposta
creare una proprietà per ogni cella che si desidera modificare nel controllore vista tabella, in questo modo:
@property (weak) IBOutlet UITableViewCell *cell1;
@property (weak) IBOutlet UITableViewCell *cell2;
Collegare ciascuno a una cella in Interface Builder.
quando hai solo bisogno di cambiare il testo dell'etichetta, è possibile utilizzare
self.cell1.textLabel.text = @"New Text";
Se è necessario sostituire l'intero marchio, utilizzare
UILabel *newLabel = [[UILabel alloc] init];
self.cell2.textLabel = newLabel;
È possibile ottenere la cellula dalla vista tabella utilizzando il metodo cellForRowAtIndexPath, sarà necessario definire un punto vendita che recuperi la vista tabella.
__weak IBOutlet UITableView *tableView;
dopo che è possibile ottenere la cella così:
NSIndexPath* indexPath = [NSIndexPath indexPathForRow:yourRow inSection:yourSection];
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
[[cell textLabel] setText:@"Your new text"];
Forse dopo aver impostato il testo che sarà necessario regolare l'etichetta, o la vostra altezza della cella, se si desidera un aiuto più profondo fornire più informazioni, e sarò felice di aiutarti.
E hai finito, spero che sia d'aiuto.
Non è necessario dichiarare un punto vendita sul TableView poiché si sta già utilizzando un UITableViewController. –
un UITableView configurato con 'celle statiche' può esistere solo nel contesto di un UITableViewController. –
@RossPenman ha inviato una buona risposta.
@ggrana notato un potenziale problema a che fare con la memoria e il riutilizzo delle cellule, tuttavia non preoccuparti che ...
Per un UITableView
con celle statiche tutte le cellule sono istanziati in anticipo, prima di viewDidLoad
viene chiamato UITableViewController
e non viene riutilizzato nel modo in cui sono le celle dinamiche. In quanto tale, puoi anche prendere lo IBOutlets
direttamente allo UITextFields
, UISwitches
, UILabels
e le cose che ti interessano davvero che hai lasciato cadere nelle tue celle statiche nello Storyboard.
Non sapevo che puoi creare 'IBOutlet' da celle statiche. Devo scavare di più nella documentazione, immagino. –
Avevo bisogno di questo.
dispatch_async(dispatch_get_main_queue(), ^{
(...textLabel updates)
[self.tableView reloadData];
});
Si può fare qualcosa di simile
for (int section = 0; section < [table numberOfSections]; section++) {
for (int row = 0; row < [table numberOfRowsInSection:section]; row++) {
NSIndexPath* cellPath = [NSIndexPath indexPathForRow:row inSection:section];
UITableViewCell* cell = [self cellForRowAtIndexPath:cellPath];
cell.backgroundColor = [UIColor blackColor];
cell.textLabel.textColor = [UIColor whiteColor;
cell.textLabel.text = @"Your text";
}
}
Inoltre, assicurarsi di tenere le modifiche di viewDidAppear e per metterli in viewWillAppear altrimenti si incorrere in problemi
Speranza che funziona :
@IBOutlet weak var yourTextField: UITextField!
private var yourText: String?
ho appena personalizzato nella delegato di questo Tableview:
override func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {
guard let yourText = yourText else { return }
yourTextField.text = yourText
}
Quando si modifica il testo:
yourText = "New text here"
tableView.reloadData()
Swift 3 soluzione:
Prima di tutto un IBOutlet di statica TableViewCell
@IBOutlet weak var cellFirst: UITableViewCell!
quindi in viewDidLoad cambia l'etichetta Nome.
cellFirst.textLabel?.text = "Language"
Nota: Se è collegato un'etichetta TableViewCell poi basta nasconderla usando storyboard.
- 1. Impostazione dati per le celle UITableView statiche
- 2. Impostazione di celle statiche in uitableview a livello di codice
- 3. Nascondi celle in UITableView con celle statiche e nessun arresto anomalo automatico
- 4. Nascondi celle vuote in UITableView
- 5. Cambia colore testo per celle utilizzando TableGrob in R
- 6. Carica più celle di prototipo in UITableView
- 7. Impossibile definire le celle prototipo in UITableView
- 8. Seleziona tutte le celle in UITableView
- 9. Aggiunta di celle statiche a UITableView in Interface Builder per iOS8? Sezione Contenuto non visualizzata
- 10. Aggiunta di celle a UITableView
- 11. Testo duplicato in UITableView
- 12. Testo multilinea in celle Excel
- 13. Qual è la differenza tra celle statiche e prototipi dinamici?
- 14. UITableView non cambia
- 15. Caricare tutte le celle in UITableView prima di scorrere
- 16. Aggiunta di un numero sconosciuto di righe a "Celle statiche" UITableView
- 17. Determina se UITableView ha celle statiche o prototipi dinamici a livello di codice?
- 18. UITableView con celle statiche senza cellaForRowAtIndexPath. Come impostare uno sfondo chiaro?
- 19. Forza UITableView per scorrere fino a Celle di celle
- 20. Impossibile nascondere le celle vuote in UITableView Swift
- 21. Come posso modificare l'aspetto di celle 'vuote' in UITableView semplice?
- 22. Altezza dinamica per celle da tavolo statiche con etichette avvolgenti?
- 23. Includere una sezione con "prototipi dinamici" in una tabella statica con "celle statiche"
- 24. NSTextField, Cambia testo in Swift
- 25. iPhone Le celle UITableView rimangono selezionate
- 26. Come rimuovere la separazione tra celle UITableView
- 27. Come rimuovere direttamente le celle da UITableView?
- 28. allineare il testo in di UITableView Footer
- 29. Modifica del testo in una cella statica UITableView?
- 30. Evidenzia celle in WPF DataGrid quando il valore associato cambia
Grande !!! Grazie. Non so che textLabel abbia una proprietà text. – vZ10
No, non è necessario conservare tutte le celle, perché è necessario riutilizzare le celle e non caricare tutte le celle nella memoria, è necessario disporre solo delle celle che si stanno visualizzando caricate! – ggrana
@ggrana Dato che si tratta di celle statiche con cui abbiamo a che fare, non è probabile che siano molte di queste, quindi l'utilizzo della memoria non sarà così significativo. Tuttavia, sono d'accordo sul fatto che la tua risposta modificata sia migliore della mia, quindi l'ho svalutata. –