2013-09-03 8 views
5

Voglio essere in grado di selezionare più righe, come l'applicazione di posta elettronica predefinito illustrato di seguito:Impossibile selezionare UITableViewCell quando TableView setEditing è impostato

enter image description here

Ho un pulsante chiamato di modifica che chiama

[self.myTableView setEditing:YES animated:YES] 

enter image description here

sul pulsante Modifica mostra con successo i cerchi a sinistra delle cellule, come l'applicazione di posta come indicato sopra. Tuttavia, quando seleziono effettivamente una delle righe, non succede nulla. Il segno di spunta rosso non appare nel cerchio come mi aspetterei. Perché il segno di spunta rosso non compare?

#pragma mark - UITableViewDataSource Methods 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"MyIdentifier"]; 

    if (cell == nil) { 
     cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"MyIdentifier"]; 
    } 

    cell.textLabel.text = @"hey"; 

    return cell; 
} 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 
    return 3; 
} 

#pragma mark - UITableViewDelegate Methods 

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
    [tableView deselectRowAtIndexPath:indexPath animated:YES]; 
} 

- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath { 
    return 3; 
} 

#pragma mark - Private Methods 

- (IBAction)editButtonTapped:(id)sender { 
    if (self.myTableView.editing) { 
     [self.myTableView setEditing:NO animated:YES]; 
    } 
    else { 
     [self.myTableView setEditing:YES animated:YES]; 
    } 
} 

risposta

14

È necessario impostare in modo esplicito la selezione deve essere abilitato durante la modalità di editing:

[self.tableView setAllowsSelectionDuringEditing:YES]; 

O

[self.tableView setAllowsMultipleSelectionDuringEditing:YES]; 

Secondo il docs: queste proprietà sono impostate per NO per impostazione predefinita.

Se il valore di questa proprietà è SÌ, gli utenti possono selezionare le righe durante la modifica di . Il valore predefinito è no. Se si desidera limitare la selezione delle celle indipendentemente dalla modalità, utilizzare allowSelection.

Inoltre, il seguente snippet di codice potrebbe causare problemi con la selezione perché deseleziona immediatamente la riga non appena è stata selezionata.

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    [tableView deselectRowAtIndexPath:indexPath animated:YES]; 
} 
+0

Grazie! Era questo. Inoltre può essere modificato in IB nella vista tabella (non in un controller di visualizzazione tabella) come "Modifica: selezione singola durante la modifica" – jrc

Problemi correlati