2012-01-31 6 views
2

Я разрабатываю приложение для iPhone, и у меня есть одна проблема. У меня есть UITableView с несколькими редактируемых строк (UITableView слайд не редактируемые строки с редактируемые строки Xcode iPhone

-(BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath{) 

и не доступны для редактирования строки. Если я нажимаю редактировать редактируемые строки слайд немного вправо и есть красная круглая кнопка слева от него, но не редактируемая строка вообще не скользит. Есть ли способ сдвинуть ее вправо, но без красной кнопки слева? На данный момент это не выглядит красиво. Надеюсь, кто-то может мне помочь this :)

+0

Вы используете пользовательские ячейки или просто настраиваете встроенный? – dasblinkenlight

ответ

1

Я не уверен, что это хорошая идея, чтобы изменить поведение tableView по умолчанию. Но если вы действительно этого хотите, вы можете, например. использование отступ.

// Might be target of button 
- (void) setEditingMode 
{ 
    tableView.editing = YES; 
    [tableView reloadData]; 
} 

// Might be target of button 
- (void) resetEditingMode 
{ 
    tableView.editing = NO; 
    [tableView reloadData]; 
} 


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    UITableViewCell* cell = ...; 
    .... 
    Boolean cellIsEditable = ...; 
    if(tableView.editing && !cellIsEditable) 
    { 
     cell.indentationWidth = ...; // (please experiment to find the exact value) 
     cell.indentationLevel = 1; 
    } 
    else 
    { 
     cell.indentationLevel = 0; 
    } 
} 
+0

О, извините, я забыл сказать, что это сгруппированный tableView. но это только сдвинет текст вправо, но ячейка по-прежнему в полном размере: S – kjeldGr

+0

Я сам решил проблему :), но все равно спасибо за вашу помощь! :) – kjeldGr

+0

@kjeldGr - в чем было решение? если вы хотите, вы можете ответить на свой вопрос (и пометить его как ответ, используя отметку под подсчетом голосов), чтобы это помогло другим, которые наткнулись на этот вопрос – Robotnik

0

Подкласс UITableViewCell и перемещайте неотредактированную строку самостоятельно.

@interface MyHistoryTableViewCell : UITableViewCell 
@end 

@implementation MyHistoryTableViewCell : UITableViewCell 

#define CELL_SLIDE_WIDTH 32 // found empirically 
- (void)setEditing:(BOOL)editing animated:(BOOL)animated 
{ 
    [super setEditing:editing animated:animated]; 
    if (self.editingStyle == UITableViewCellEditingStyleNone) { // not editable 
     CGRect frame = self.frame; 
     UITableView *tableView = ((UITableView *)(self.superview)); 
     if (tableView.editing) { // going to editing mode 
      frame.origin.x = CELL_SLIDE_WIDTH; 
      frame.size.width = tableView.frame.size.width - CELL_SLIDE_WIDTH; 
     } else { // ending editing 
      frame.origin.x = 0; 
      frame.size.width = tableView.frame.size.width; 
     } 
     [UIView animateWithDuration:0.3 animations:^{ // match the tableView slide duration 
      self.frame = frame; 
     }]; 
    } 
} 
@end 

Если у вас есть подвидами, которые должны быть закреплены в правой части ячейки (например, кнопка, которая не должна скользить), а затем сделать

mySubview.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin; // anchors to the right margin 

Кроме того, вы должны быть творческими, когда установив frame.origin.x в subview. Я экспериментировал со многими значениями, пока не нашел что-то, что сработало (значение для меня не имело смысла).

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