#iphone #ios #uitableview
#iPhone #iOS #uitableview
Вопрос:
Я переопределяю TableView:commitEditingStyle:forRowAtIndexPath, чтобы стать методом, который сбрасывает текстовые метки в моих uitableviewcells, однако это приводит к ошибкам, когда пользователь в следующий раз прикасается к uitableview .. его нужно коснуться один раз, прежде чем он что-либо сделает (поэтому для получения какого-либо ответа требуется два касания.)
Я надеюсь, что кто-то может помочь, кто также был в подобной ситуации;. Мой код приведен ниже.. Я отладил его до метода TableView:commitEditingStyle:forRowAtIndexPath, как если бы я закомментировал tableview:titleForDeleteConfirmationButtonForRowAtIndexPath: метод, все равно происходит то же самое.. Поэтому я думаю, что я делаю что-то не так, переопределяя другой метод.
- (NSString *)tableView:(UITableView *)tableView titleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath *)indexPath
{
return @"Clear";
}
// Override to support editing the table view.
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
if (editingStyle == UITableViewCellEditingStyleDelete) {
// Delete the row from the data source
//[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationNone];
//reset uitableviewcell textlabel with default input "empty"
vehicleSearchObjectString = @"empty";
[self.tableView reloadData]; //reloads the tabels so you can see the value.
}
else if (editingStyle == UITableViewCellEditingStyleInsert) {
// Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view
}
}
Обновить
Здесь я устанавливаю текстовую метку uitableviewcell
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
[[NSBundle mainBundle] loadNibNamed:@"VehicleSearchCell" owner:self options:nil];
cell = vehicleSearchCell;
self.vehicleSearchCell = nil;
}
// Configure the cell...
cell.selectionStyle = UITableViewCellSelectionStyleNone;
if(indexPath.section == 0)
{
if(indexPath.row == 0)
{
UILabel *label1;
label1 = (UILabel *)[cell viewWithTag:1];
label1.text = @"Manufacture";
UILabel *label2;
label2 = (UILabel *)[cell viewWithTag:2];
label2.text = vehicleSearchObjectString;
}
//...
Комментарии:
1. В чем ошибка / проблема? Сбой? Что?
2. как только я нажимаю кнопку, и uitextlabel ячейки устанавливается на «пустой», если я попытаюсь нажать на эту текстовую ячейку (которая должна привести меня к вложенному просмотру), она не отвечает при первом касании.. он отвечает на второй … похоже, что весь мой uitableview перестает отвечать.
3. vehicleSearchObjectString: что это? Где вы устанавливаете его для затронутой (подлежащей удалению) ячейки tableViewCell?
4. Это строка NS, объявленная в моем основном представлении, которая устанавливается протоколом subview, который я настроил.
5. ОК. Итак, где вы устанавливаете «пустой» для UITableViewCell?
Ответ №1:
Если вы используете этот метод, вы включили редактирование таблицы, я предлагаю проверить, где / когда он отключен, поскольку это может быть причиной того, что щелчок выглядит как игнорируемый.
Еще одно направление, которому я хотел бы следовать, — избегать метода reloadData, который запускает довольно много вещей и иногда не контролируется разработчиком. У вас есть indexPath, поэтому вы можете настроить таргетинг на одну ячейку для обновления, используя :
- (UITableViewCell *)cellForRowAtIndexPath:(NSIndexPath *)indexPath
в представлении таблицы.
Последнее, что я бы исследовал, это комментарий Apple об обновлении таблиц: http://developer.apple.com/library/ios/#documentation/UserExperience/Conceptual/TableView_iPhone/ManageInsertDeleteRow/ManageInsertDeleteRow.html#//apple_ref/doc/uid/TP40007451-CH10-SW1 В нем говорится, что метод commit … должен вызывать метод :
deleteRowsAtIndexPaths:withRowAnimation:
или аналогичный для вставки, но это не то, что произойдет, если нет.
Комментарии:
1. хорошо, спасибо за предложения.. Я собираюсь перейти к ним сейчас 🙂 спасибо. очевидно, что если я получу какой-либо из них, я дам вам награду.
2. Я попытался настроить таргетинг на свои ячейки для обновления, но как только один из них перемещается, он все равно влияет на всю таблицу… все еще рассматриваю ваши другие предложения..
Ответ №2:
Итак, я решил проблему !… Я в основном удалил просмотры.h.m.xib запустился снова, в значительной степени скопировал мой код прямо в файл, и он работает отлично… Я понятия не имею, почему это произошло, может быть, что-то, что я сделал, когда я впервые его настроил.. Я не уверен…