2013-10-10 22 views
31

Merhaba orada bir iPad uygulamasında benim master controller benim liste ve ayrıntılar denetleyici ayrıntıların, tipik bir UISplitViewController desen var. Elde etmek istediğim, ilk satırımın başlangıçta seçilmesi ve daha sonra kullanıcıya seçim seçimi yapmak istiyorum. Ben bu gibi bir seçim kaldırma hücre setSelected ve didSelectRowAtIndexPath yöntemini kullanıyorum.UITableViewCell Başlangıçta seçilen seçili

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    [tableView deselectRowAtIndexPath:indexPath animated:NO]; 
    NSIndexPath* path = [NSIndexPath indexPathForRow:0 inSection:0]; 
    UITableViewCell* cell = [tableView cellForRowAtIndexPath:path]; 
    [cell setSelected:NO]; 
} 
ilk hücre için

ama benim yok hücresi o sonra seçilen oluyor bana yardım edin.

+0

otomatik olarak Tableview ilk satırı seçmek istiyor musunuz? – wesley

cevap

41

gibi didSelectRowAtIndexPath yöntemi için bu

NSIndexPath* selectedCellIndexPath= [NSIndexPath indexPathForRow:0 inSection:0]; 
[self tableView:tableViewList didSelectRowAtIndexPath:selectedCellIndexPath]; 
[tableViewList selectRowAtIndexPath:selectedCellIndexPath animated:YES scrollPosition:UITableViewScrollPositionNone]; 

VEYA

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
if (/* should be selected */) { 
    [cell setSelected:YES animated:NO]; 
} 
} 
8

Bu cevabı beklediğinizi bilmiyordum. Dışarı el ile seçim ile tableView ilk satırı seçmek istiyorsa Varsayılan olarak, sadece bu

- (void)viewDidAppear:(BOOL)animated { 
    NSIndexPath *indexPath=[NSIndexPath indexPathForRow:0 inSection:0]; 
    [myTableView selectRowAtIndexPath:indexPath animated:YES scrollPosition:UITableViewScrollPositionBottom]; 
} 
70

deneyin başlatmak Seçilen hücrenin görünmesi için,'u -tableView:willDisplayCell:forRowAtIndexPath: içinden aramak zorundasınız:

-setSelected numaralı telefondan arama yapmanın hiçbir etkisi yoktur.

+15

Bu kabul edilen cevap olmalı. – RaffAl

+19

Aşağıdaki satırı ekleyebiliyorsanız, bu cevap harika olacaktır [tableView selectRowAtIndexPath: indexPath canlandırılmış: NO scrollPosition: UITableViewScrollPositionNone]; Bu kullanıcının hücrenin seçimini kaldırmasına izin verir. Bu satır eksikse, hat seçili olamaz. – cateof

+3

Ama isterseniz [tableView selectRowAtIndexPath: indexPath animated: use scrollPosition: UITableViewScrollPositionNone]; Bunu [tableView: weillDisplayCell:] içinde çalışmaz diye [tableView: cellForRowAtIndexPath:] dosyasına yapıştırmanız gerekir. –

5

Ayrıca POP Navigasyon

.h dosyasında durumunda yardımcı olacaktır,

viewDidAppear yılında ViewDidLoad

defaultSelectedCell= [NSIndexPath indexPathForRow:0 inSection:0]; 

Bu kodu koy

NSIndexPath *defaultSelectedCell 

.m Dosya

0 Eğer POP zaman

Bu

[self.tableView selectRowAtIndexPath:defaultSelectedCell animated:NO scrollPosition:UITableViewScrollPositionNone]; 

defaultSelectedCell = [NSIndexPath indexPathForRow:indexPath.row inSection:0]; 

Bu bana mükemmel ilk kez yükleme veya Pop Navigasyon ya yardımcı olur, tableView didSelectRowAtIndexPath Yöntem viewWillAppear

[self.catTableView selectRowAtIndexPath:defaultSelectedCell animated:NO scrollPosition:UITableViewScrollPositionNone]; 

Bu kodu koy yardımcı olacaktır.

19

Swift 3: seçme hücre başlangıçta

import UIKit 

class MyViewController: UIViewController, UITableViewDelegate { 
    @IBOutlet weak var tableView: UITableView! 
    ... 

    func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) { 

     if /* your code here */ == indexPath.row { 
      tableView.selectRow(at: indexPath, animated: false, scrollPosition: UITableViewScrollPosition.none) 
     } 
    } 

    ... 
} 
+2

Başka bir satır seçildiğinde seçimi koruduğu için seçilen cevap bu olmalıdır. Belki de, eğer mevcut değilse sadece satırı seçtiğinden emin olmak için eğer ifadeyi seçerseniz, o zaman bir onay işareti ekleyin. –

+1

Douglas’a katılıyorum. Bu doğru cevap olarak işaretlenmelidir. Son birkaç saat içinde çözüm aradım ve bu benim problemimi çözdü. – user30646

+0

@ user30646 burada aynı!! Bu benim de sorunumu çözmeme yardımcı olduğu için doğru cevap olmalı! – Pangu