2011-05-07 26 views
16

- (void)tableView:(UITableView *)aTableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath temsilci yönteminde belirtilen davranışı çoğaltmak amacıyla kodumun UITableView'imde bir hücreye "dokunma" özelliği olduğunu merak ettim.UITableView hücresine nasıl programlanır?

Başka bir deyişle, - (void)tableView:(UITableView *)aTableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath temsilci yöntemini programlı olarak çağırmak mümkün müdür?

cevap

19

Herhangi bir mantığı didSelectRowAtIndexPath içine ayrı bir yönteme koymayın ve bu yöntemi hem didSelectRowAtIndexPath hem de başka bir yerde aynı kodu aramak istediğinizde arayamaz mısınız?

+0

Teşekkürler, aslında ben yaptım ve ben çalışırım ... – cgossain

+1

Evet ama dokunduğunuzda hücre, vurgulandığı gibi vurgulanmıyor. Orada fikir var mı? –

+1

@BeemerFan: Yeni, genel yöntemi çağıran yöntemden arama yapın: [self.tableView selectRowAtIndexPath: myIndexPath animated: false scrollPosition: UITableViewScrollPositionNone]; – Rob

0

Sadece bir yöntem. Devam et ve başka bir yöntem çağırırsın diye çağır.

+4

tavsiye eklemek ve özetlemek için. – Till

35

hücre seçmiş istiyorsanız, yani belirli bir hücreyi vurgulayın:

Eğer ek sizin didSelectRowAtIndexPath yönteminde eylemleri tetiklemek istiyorsanız, el temsilci yöntemini çağırmanız gerekir
//select first row of first section 
NSIndexPath* selectedCellIndexPath= [NSIndexPath indexPathForRow:0 inSection:0]; 
[self.tableView selectRowAtIndexPath:selectedCellIndexPath animated:false scrollPosition:UITableViewScrollPositionMiddle]; 

, o kazandı' t otomatik olarak:

[self tableView:self.tableView didSelectRowAtIndexPath:selectedCellIndexPath]; 
+0

İkinci kod satırı benim için işi yaptı, teşekkürler. –

+0

Arama didSelectRowAtIndexPath, yine de segues tetiklemez. – Andy

+0

Evet öyle. Benim için çalışıyor. – Tander

0

Bu bir 6.1 güncelleştirmesidir. Seçimlerinizi kullanırken - tüm tavsiyeler iyidir, ancak aynı zamanda segue'yi de çağırmalısınız. D: Yani - ama hey, bu kusur arayan olabilir - bu

// ... assuming we just added a new row - which is one use of what this thread is trying to do 

/* get new count - this is the row we are going to highlight - 0 based */ 
int newIndex = [dataArrayUnderlyingTable count]-1; 

/* make it look pretty by highlighting it */ 
    NSIndexPath *nip = [NSIndexPath indexPathForRow:newIndex inSection:0]; 
    [[self tableView] selectRowAtIndexPath:nip animated:YES scrollPosition:UITableViewScrollPositionBottom]; 

/* run the code in the following method so it is not missed */ 
    [self tableView:[self tableView] didSelectRowAtIndexPath:nip]; 

/* now 'tap' on it ... or simulate it */ 
    [self performSegueWithIdentifier: @"viewChildDetails" sender: self]; 
1

Swift 3.2 Çözüm aslında bir örnek yöntemi değil, bir sınıf yöntemidir

let indexPath = IndexPath(row: 2, section: 0) // change row and section according to you 
tblView.selectRow(at: indexPath, animated: true) 
tblView.delegate?.tableView!(tblView, didSelectRowAt: indexPath) 
+0

Burada çekilmiş gibi görünüyor https://stackoverflow.com/a/40590050/5790492! –