ochoty jadę nieco orzechowy tutaj. Mam widok z kilku autonomicznych UITextField
s, kilka UITextFields
w UITAbleViewCell
S i jednym UITableViewCell
, które będą używane do przechowywania notatek, czy istnieją jakiekolwiek szczegóły. Chcę, aby ta komórka była możliwa do wybrania, gdy jestem w trybie edycji. Kiedy nie jestem w trybie edycji, nie chcę móc go wybrać. Wybranie komórki (w trybie edycji) uruchomi metodę, która zainicjuje nowy widok. Wiem, że to bardzo łatwe, ale gdzieś czegoś mi brakuje.Prawidłowo konfigurowania willSelectRowAtIndexPath i didSelectRowAtIndexPath wysłać pozycje komórkowych
Oto obecne metody selekcji używam:
-(NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if (!self.editing) {
NSLog(@"Returning nil, not in edit mode");
return nil;
}
NSLog(@"Cell will be selected, not in edit mode");
if (indexPath.section == 0) {
NSLog(@"Comments cell will be selected");
return indexPath;
}
return nil;
}
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if (!self.editing) {
NSLog(@"Not in edit mode. Should not have made it this far.");
return;
}
if (indexPath.section == 0)
[self pushCommentsView];
else
return;
}
Mój problem jest naprawdę 2-krotnie;
1) Nawet jeśli nie jestem w trybie edycji i wiem, że wracam nil
(z powodu komunikatu NSLog
), nadal mogę wybrać wiersz (miga na niebiesko). Z mojego zrozumienia metody willSelectRowAtIndexPath
nie powinno się tak dziać. Może się mylę?
2) Kiedy wejść w tryb edycji, nie mogę w ogóle cokolwiek wybrać. metoda willSelectRowAtIndexPath
nigdy pożary, a nie robi didSelectRowAtIndexPath
. Jedyne, co robię w metodzie setEditing
, to ukrywanie przycisku Wstecz podczas edytowania i przypisywanie firstResponder
do górnego pola tekstowego, aby klawiatura pojawiła się. Pomyślałem, że być może pierwszy responder staje na drodze do kliknięcia (co byłoby głupie), ale nawet z tym skomentowanym, nie mogę wykonać wyboru komórki podczas edycji.
W Xcode 4.2/iOS5 można je ustawić w TableView in Interface Builder. –
Rozwiązano, wybierając opcję "Pojedynczy wybór" w opcji "wybór" Storyboard/Interface Builder. DZIĘKI! –