Reputation: 17530
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
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
Reputation: 28720
you can set any cell selected in cellforrowatindexpath method of uitableview.By using cell.selected=YES;
Upvotes: 2
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