2011-08-23 173 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