2013-08-12 11 views
6

Mam tableView z niektórymi komórkami. Każda komórka zawiera również przycisk. Gdy użytkownik kliknie przycisk, komórka powinna być dająca się skasować, ale nie przycisk. Kiedy użytkownik kliknie przycisk komórki, która nie jest klikalna, ta komórka powinna być znowu klikalna.Nie można kliknąć komórki, ale przycisk powinien nadal być klikalny.

Próbowałem:

cell.userInteractionEnabled = NO; 

... ale wtedy przycisk nie był już klikalne.

Dzięki Waszemu wysiłkowi z góry.

EDYCJA Mam na myśli: po kliknięciu komórki otwiera się nowy widok. Ale chcę, aby nic się nie działo, gdy komórka nie jest "klikalna".

+0

spróbuj ustawić 'userInteractionEnabled' na poszczególnych kontroli. –

+0

@MarcusAdams Ale jak mogę to zrobić? – user2650439

Odpowiedz

14

Niepowrotna w jaki sposób? Jeśli chcesz po prostu komórka nie być wybierane, prawdopodobnie szukając w ten sposób:

cell.selectionStyle = UITableViewCellSelectionStyleNone; 

Jeśli chcesz, aby zapobiec kod wykonywany gdy wybór jest wyłączony, wystarczy sprawdzić na własność selekcji wewnątrz didSelectRowAtIndexPath: metoda. Coś takiego:

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath]; 
    if (cell.selectionStyle != UITableViewCellSelectionStyleNone) { 
     //(your code opening a new view) 
    } 
} 

Pamiętaj, trzeba jeszcze grać z tej właściwości, ustawienie UITableViewCellSelectionStyleNone gdy nie chcesz komórka być wybierane i ustawienie z powrotem do UITableViewCellSelectionStyleBlue (lub UITableViewCellSelectionStyleGray) kiedy chcesz być ponownie do wyboru.

+0

+1 dla wykorzystania pierścienia dekodera. –

+0

Ale nadal mogę kliknąć komórkę i otwiera się nowy viewController ... jedyną różnicą, jaką rozpoznaję, jest to, że ich kolor nie jest wybrany, gdy komórka jest zaznaczona ... lub czy coś tu jest nie tak – user2650439

+0

Edytowane. Spróbuj i zobacz, czy to pomogło. –

0

Usuń zaznaczenie, ustawiając UITableViewCellSelectionStyleNone jako selectionStyle.

cell.selectionStyle = UITableViewCellSelectionStyleNone; 

i nic nie robić w -tableView:didSelectRowAtIndexPath:

Możesz być selektywny w tej metodzie delegata na przykład, jeśli tylko pierwszy wiersz w pierwszej części posiada przycisk i powinna robić nic:

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    NSIndexPath *indexPathForDisabledCell = [NSIndexPath indexPathForRow:0 
                   inSection:0]; 
    if([indexPath compare:indexPathForDisabledCell] != NSOrderedSame) { 
     //Do whatever you do with other cells 
    } 
} 
Powiązane problemy