Mi sento come se avessi un po 'di nocciola qui. Ho una vista dettagliata con alcuni stand alone UITextField
s, alcuni UITextFields
in UITAbleViewCell
s e uno singolo UITableViewCell
che verrà utilizzato per contenere le note, se ce ne sono. Voglio solo questa cella selezionabile quando sono in modalità di modifica. Quando non sono in modalità di modifica, non voglio essere in grado di selezionarlo. Selezionando la cella (mentre in modalità di modifica) si attiva un metodo che avvierà una nuova vista. So che è molto facile, ma mi manca qualcosa da qualche parte.Configurare correttamente willSelectRowAtIndexPath e didSelectRowAtIndexPath per inviare selezioni di celle
Questi sono i metodi che hai scelto che sto usando:
-(NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if (!self.editing) {
NSLog(@"Returning nil, not in edit mode");
return nil;
}
NSLog(@"Cell will be selected, not in edit mode");
if (indexPath.section == 0) {
NSLog(@"Comments cell will be selected");
return indexPath;
}
return nil;
}
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if (!self.editing) {
NSLog(@"Not in edit mode. Should not have made it this far.");
return;
}
if (indexPath.section == 0)
[self pushCommentsView];
else
return;
}
Il mio problema è in realtà 2 volte;
1) Anche quando non sono in modalità di modifica, e so che sto restituendo nil
(a causa del messaggio NSLog
), posso ancora selezionare la riga (lampeggia in blu). Dalla mia comprensione del metodo willSelectRowAtIndexPath
, questo non dovrebbe accadere. Forse mi sbaglio di questo?
2) Quando si accede alla modalità di modifica, non è possibile selezionare nulla. il metodo willSelectRowAtIndexPath
non si attiva mai e nemmeno lo didSelectRowAtIndexPath
. L'unica cosa che sto facendo nel metodo setEditing
, è nascondere il pulsante Indietro durante la modifica e assegnare firstResponder
al campo testo in alto per far apparire la tastiera. Ho pensato che forse il primo interlocutore avrebbe interferito con il click (che sarebbe stato stupido), ma anche con quello commentato, non posso eseguire la selezione della cella durante la modifica.
In Xcode 4.2/iOS5, questi possono essere impostati su TableView in Interface Builder. –
Risolto scegliendo "Selezione singola" nell'opzione "selezione" di Storyboard/Interface Builder. GRAZIE! –