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!

Original source