Soru Düzenlerken, 'UITableView` didSelectRowAtIndexPath çağrısı yapmıyor?


Benim bir UITableViewController Kullanıcının öğeleri düzenlemesi gereken yerler. Düzenlemeyi etkinleştirmek için şunu kullanıyorum:

self.navigationItem.rightBarButtonItem = self.editButtonItem;

Self.editButtonItem'in nereden geldiğini bilmeyen herkes için, SDK tarafından önceden tanımlanmıştır.

Yani, şimdi herhangi bir öğeye bastığımda, bu yöntem denir:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 

ancak düzenleme düğmesine bastığımda ve düzenleme etkinken, bu yöntem çağrılmıyor gibi görünüyor.

Ne eksik olduğum hakkında bir fikrin var mı?

Bu, düzenlemeyle ilgili olan kodun geri kalanıdır:

// Override to support conditional editing of the table view.
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath 
{
    // Return NO if you do not want the specified item to be editable.
    return YES;
}

- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath 
{
    return UITableViewCellEditingStyleNone;
}


- (BOOL)tableView:(UITableView *)tableView shouldIndentWhileEditingRowAtIndexPath:(NSIndexPath *)indexPath 
{
    return NO;
}

Yardım için teşekkürler.

mCB


44
2018-06-15 17:34


Menşei




Cevaplar:


UITableView'ın allowSelectionDuringEditing özelliğini true değerine ayarlamanız gerekir.

Referans: UITableView - sağlarSelectionDuringEditing


119
2018-06-15 17:45



Tam olarak ne eksik olduğumu, teşekkürler - elementsense
Sihirli cevap .. _superTableView.allowsSelectionDuringEditing = true; ve _superTableView.allowsSelection = true; Teşekkürler!! - Fattie
Dört yıl sonra hala hayat kurtarıyorsun! - thomax


Sen ayarlamak self.editing = YES Düzenleme düğmesine dokunulduğunda?

Düzenleme modundayken, bir satıra dokunduğunuzda didSelectRow yerine bu yöntem çağrılır:

tableView:commitEditingStyle:forRowAtIndexPath:.

0
2018-06-15 17:47



iddianızın doğru olup olmadığından emin değilim, hücrenin gerçekten silindiği veya düzenlediğimde komisyonculuğum kalsa alır ... cevabımı oku, didselectRow'un geri çağırma düzenini geri çağırması - Daniel
Merhaba, tabiki tamamen haklısın! Dikkat etmedim: / üzgünüm. - RickiG


Bu sorunu başka şekilde çözdüm. Düzenleme düğmem kendi Gezinti çubuğumdaydı ve çağrılmamasının nedeni buydu. Navigasyon Kontrolörüne VC yerleştirdikten ve Navigasyon Öğesinin içine yeni Düzenleme düğmesi koyduktan sonra, Düzenle düğmesi aranmaya başladı.


0
2018-01-25 10:17





ancak düzenleme düğmesine bastığımda ve düzenleme etkinken, bu yöntem çağrılmıyor gibi görünüyor.

Ne eksik olduğum hakkında bir fikrin var mı?

Evet. Bekliyorsunuz tableView:didSelectRowAtIndexPath: nav çubuğunuzdaki bir düğmeye basıldığında çağrılacaksınız. Bu asla olmayacak. Bu yöntem sadece bir satır seçildiğinde çağrılır.

Düzenleme düğmesine dokunulduğunda, tablonuzu düzenleme moduna geçirmek isteyeceksiniz. Görünüm denetleyicinizde:

- (void)setEditing:(BOOL)editing animated:(BOOL)animated
{
    [super setEditing:editing animated:animated]; // must be called first according to Apple docs

    [self.tableView setEditing:editing animated:animated];
}

Ardından düzenleme etkinlikleri ekleyerek tableView:commitEditingStyle:forRowAtIndexPath: yöntem.


-2
2018-06-15 17:49



Düzenleme sırasında neden bir şey yapılmadığını soruyor. Düzenlemeyi tıklattığında gerçekleşmesini beklemiyor. - Daniel
@Daniel Eğer yakından bakarsanız, soruyu cevaplandığı gibi cevapladığımı göreceksiniz. - Shaggy Frog