Programmatically emulate the selection in UITableViewController in Swift

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)
}

You can also do this simply by accessing the tableView delegate to force didSelectRowAtIndexPath to fire.

Programatically select a row to work with:

self.tableView.selectRowAtIndexPath(indexPath, animated: true, scrollPosition: UITableViewScrollPosition.Top)

Programatically selecting row does not fire the "didSelectRowAtIndexPath" function so we must manually force the firing as per below:

self.tableView.delegate!.tableView!(tableView, didSelectRowAtIndexPath: indexPath!)

Objective-C:

[self.tableView.delegate tableView:self.tableView didSelectRowAtIndexPath:path];