Programmatically emulate the selection in UITableViewController in Swift
ios, swift, uitableview
Solution
Yes you can do this in swift.Just load your `tableViewController` as usual.You just have to call
In Swift
let rowToSelect:NSIndexPath = NSIndexPath(forRow: 0, inSection: 0); //slecting 0th row with 0th section
self.tableView.selectRowAtIndexPath(rowToSelect, animated: true, scrollPosition: UITableViewScrollPosition.None);
The `selectRowAtIndexPath` function will not trigger delegate methods like `didSelectRowAtIndexPath:` so you have to manually trigger this delegate method
self.tableView(self.tableView, didSelectRowAtIndexPath: rowToSelect); //Manually trigger the row to select
Or If you are pushing `ViewControllers` with segue you have to trigger `performSegueWithIdentifier`
self.performSegueWithIdentifier("yourSegueIdentifier", sender: self);
Now you can push viewController in `didSelectRowAtIndexpath`.To select the first row in first section or execute whaterver you have written in `didSelectRowAtIndexpath:` of `tableView`
As For your case just push the `viewController` on select at 0th index with `didSelectRowAtIndexPath`
func tableView(tableView: UITableView!, didSelectRowAtIndexPath indexPath: NSIndexPath!){
if indexPath.row == 0 {
self.navigationController.pushViewController(yourViewControllerToPush, animated: YES);
}
//handle other index or whatever according to your conditions
}
It will show the view controller pushed and if you do not want to animate view controller just pass `NO` to `pushViewController` method.
On pressing `Back` button you will back to your `viewController`
In your case just write this in your `viewDidAppear`
if firstStart {
firstStart = false
let rowToSelect:NSIndexPath = NSIndexPath(forRow: 0, inSection: 0)
self.tableView.selectRowAtIndexPath(rowToSelect, animated: true, scrollPosition:UITableViewScrollPosition.None)
self.performSegueWithIdentifier("showForecastSelectedCity", sender: self)
}
Problem
Sorry for the question without any line of code. I need advice how to proceed, if at possible that I want. In Swift language. Let us assume there is an app with two controllers - `UITableViewController` with embedded `NavigationController`, as the main. When you select a row in the table, opens `UIViewController`, which displays detailed information about the selected value. Is it possible to do otherwise? When the application start, programmatically emulate the selection of the first row in the table and immediately display `UIViewController` with detailed information about the selected value. And from this controller possible to return to `UITableViewController` via the `NavigationController`. Once again I apologize and thank you in advance!