2013-04-29 3 views
1

Когда мой tableView не находится в режиме редактирования, я не хочу, чтобы пользователь мог касаться ячеек и выделить их. Но, поскольку я установил allowsSelectionDuringEditing в YES, пользователи могут выбирать ячейки в режиме редактирования.UITableView: Показать выбранный фон ячейки только в режиме редактирования

Как показывать только выделенную ячейку или цвет только ТОЛЬКО в режиме редактирования?

ответ

-1

Я понял это. Вот мой метод, который устанавливает режим редактирования tableView:

- (void)tableViewEdit { 

    if (self.tableView.editing) { 
     [self.editButton setTitle:NSLocalizedString(@"Edit", nil) forState:UIControlStateNormal]; 
     self.tableView.allowsSelection = NO; 
    } else { 
     [self.editButton setTitle:NSLocalizedString(@"Done", nil) forState:UIControlStateNormal]; 
     self.tableView.allowsSelection = YES; 
    } 
    [self.tableView setEditing:!self.tableView.editing animated:YES]; 

}//end 

Я также ранее установленные self.tableView.allowsSelection в NO по умолчанию, так что это будет только после того, как YES режим редактирования вводится.

+0

, вы бы лучше переопределили setEditing или посмотрели мой ответ еще проще. – malhal

-1
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ 
    static NSString *[email protected]"Cell"; 
    UITableViewCell *cell=[tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    if(cell==nil){ 
    //YOUR inits 
    } 

    if(self.editing){ 
    [cell setSelectionStyle:UITableViewCellEditingStyleNone]; 
    }else 
    [cell setSelectionStyle:UITableViewCellEditingStyleBlue]; 

    return cell; 

} 

и

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ 
    if(self.editing)return; //NO ACTION 
} 
+1

Это не работает в моем опыте, потому что, когда вы переходите в режим редактирования, «cellForRowAtIndexPath» снова не вызывается, а ячейки не перерисовываются, поэтому они не знают, что они должны показывать цвет, когда коснулся режима редактирования. –

+0

Как насчет перезагрузки таблицы при включении режима редактирования? – iphonic

+0

Это делает симпатичную анимацию. Конечно, это действительно работает, но я хочу анимацию. –

0

Интересный сценарий, к счастью, это так просто, как это:

// -tableView:shouldHighlightRowAtIndexPath: is called when a touch comes down on a row. 
// Returning NO to that message halts the selection process and does not cause the currently selected row to lose its selected look while the touch is down. 
- (BOOL)tableView:(UITableView *)tableView shouldHighlightRowAtIndexPath:(NSIndexPath *)indexPath{ 
    return self.isEditing; 
} 

Как вы можете видеть из комментария shouldHighlight Apple, является первым шагом в процессе отбора, так что это место, чтобы остановить его в случае таблицы редактируются.

Смежные вопросы