2011-08-23 172 views
3

我有一個視圖有幾個選項,它裏面是一個從服務器獲取數據的表視圖。UITableView以編程方式選擇選項

有沒有辦法讓表格視圖在加載時自動選擇第一個選項,即在viewDidLoad

回答

12

嘗試UITableView'sselectRowAtIndexPath:animated:scrollPosition:方法。

- (void)viewDidLoad { 
    [self.tableView selectRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] animated:NO scrollPosition:UITableViewScrollPositionNone]; 
} 

如果你想委託回調,你必須手動調用它:

if ([self.tableView.delegate respondsToSelector:@selector(tableView:didSelectRowAtIndexPath:)]) 
    [self.tableView.delegate tableView:self.tableView didSelectRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0]]; 

你可能想緩存在一個局部變量指數路徑,然後。

1

要選擇一行,可以使用UITableView的實例方法selectRowAtIndexPath:animated:scrollPosition:選擇一行。

但是你爲什麼想要在viewDidLoad

+0

它在viewDidLoad(viewDidAppear:也有效)中做到這一點是有意義的,因此用戶看到加載視圖時選擇的第一行。 – FeifanZ

+0

我認爲'viewWillAppear:'或'viewDidAppear:'是一個更好的選擇。我問的原因是因爲我不認爲UITableView從'viewDidLoad'方法中的數據源加載其數據(除非在'viewDidLoad'的實現中顯式調用'reloadData')。 –

+1

我想在一個聲明中做到這一點,即如果只有一個結果發佈到tableView,然後它被選中。如果還有更多,則必須手動選擇一個。 – Baub