Domanda

Voglio modificare il nome utente dell'utente all'interno di UITableView. Ho aggiunto un UITextField a UITableViewCell e questo sembra funzionare molto bene. Ma quando l'utente tocca la cella (anche al di fuori del campo di testo), si aspetta di modificare.

Come posso selezionare programmaticamente il campo di testo?

Il codice sarebbe simile a:

- (void)tableView:(UITableView *)tableView 
didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
userName.selected = TRUE;
}
È stato utile?

Soluzione

- (void)tableView:(UITableView *)tableView 
didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{
   UITableViewCell *cellSelected = [tableView cellForRowAtIndexPath: indexPath];
   UITextField *textField = [[cellSelected.contentView subviews] objectAtIndex: 0];
   [textField becomeFirstResponder];

   [tableView deselectRowAtIndexPath: indexPath animated: NO];

}

Ciò presuppone che non abbiate un modo più rapido per sapere quale oggetto UITextField si trova in quale cella e che sappiate per certo che UITextField sarà la prima sottoview.

Potresti anche voler mettere un segno di spunta per [textField isFirstResponder] - non ha senso renderlo il primoRisponditore se lo è già. Questo potrebbe non essere necessario però.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top