Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
574 views
in Technique[技术] by (71.8m points)

iphone - Update editing style of UITableViewCell depending on contents

I am creating a table-based interface similar to iPad Contacts, in which the user can add to a list of rows by tapping a blank row at the bottom. The table is always in editing mode, and non-blank rows should have a standard delete editing icon to the left. As soon as the user starts typing in the last blank row, a delete icon should be added to the left (and a new blank row added).

Does anyone know how to make the UITableView update the editing style on demand? Everything works, except that the delete icon doesn't appear until the user scrolls the row out of view and then back into view.

Here's my editingStyleForRowAtIndexPath implementation:

- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView 
           editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath
{
   if (/* text field contains data */)
   {
      return UITableViewCellEditingStyleDelete;
   }
   else
   {
      return UITableViewCellEditingStyleNone;
   }
}
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

I fought this same problem yesterday. You basically have to toggle the table view's editing mode property. After you do that, it will refresh your cell's editingStyle.

Here's the code that does the trick for me:

self.tableView.editing = NO;
self.tableView.editing = YES;

This gives what appears to me to be the exact same sort of effect as the contacts app. At a minimum, it will refresh your editingStyle.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...