an0
an0

Reputation: 17530

How to initially select a row in UITableView

I can not find a good spot to call selectRowAtIndexPath:animated:scrollPosition: to initially select a row in UITableView. Table data have not been loaded when the table view controller is initialized, so I can't do selection immediate after the initialization of my UITableViewController(Over bound exception would occur otherwise).

Upvotes: 9

Views: 8921

Answers (3)

Jessedc
Jessedc

Reputation: 12460

Try and overload viewWillAppear:animated or viewDidAppear:animated make sure to call super as well.

Make sure to call selectRowAtIndexPath:indexPath animated:NO as well, it will select without the time delay.

Upvotes: 3

Rahul Vyas
Rahul Vyas

Reputation: 28720

you can set any cell selected in cellforrowatindexpath method of uitableview.By using cell.selected=YES;

Upvotes: 2

Darren
Darren

Reputation: 25619

You need to use viewWillAppear: to set the state of a view before it appears, every time it appears, even if the view has already been displayed previously. Any non-visible view in a UITabViewController or UINavigationViewController can be unloaded at any time, so you cannot count on a non-visble view to retain its state.

Or, for finer control, implement loadView, viewDidLoad, and viewDidUnload.

If you are maintaining your own hierarchy of view controllers you will have to manually forward the viewWillAppear, viewWillDisappear, etc., messages to your sub-view controllers.

Upvotes: 6

Related Questions