Émuler par programme la sélection dans UITableViewController dans Swift

Désolé pour la question sans aucune ligne de code. J'ai besoin de conseils sur la façon de procéder, si possible que je veux.

En langue Swift.

Supposons qu'il existe une application avec deux controllers – UITableViewController avec NavigationController embedded, comme principal. Lorsque vous select une ligne dans la table, ouvre UIViewController , qui affiche des informations détaillées sur la valeur sélectionnée.

Est-il possible de faire autrement? Lorsque l'application démarre, émuler par programme la sélection de la première ligne de la table et afficher immédiatement UIViewController avec des informations détaillées sur la valeur sélectionnée. Et de ce controller possible de returnner à UITableViewController via le NavigationController .

Encore une fois je m'excuse et je vous remercie d'avance!

Oui, vous pouvez le faire dans swift.Juste charger votre tableViewController comme d'habitude.Vous avez juste à appeler

Dans Swift

  let rowToSelect:NSIndexPath = NSIndexPath(forRow: 0, inSection: 0); //slecting 0th row with 0th section self.tableView.selectRowAtIndexPath(rowToSelect, animated: true, scrollPosition: UITableViewScrollPosition.None); 

La fonction selectRowAtIndexPath ne triggersra pas de methods de délégation comme didSelectRowAtIndexPath: vous devez donc triggersr manuellement cette méthode de délégation.

  self.tableView(self.tableView, didSelectRowAtIndexPath: rowToSelect); //Manually sortinggger the row to select 

Ou Si vous ViewControllers sur ViewControllers avec segue, vous devez triggersr performSegueWithIdentifier

  self.performSegueWithIdentifier("yourSegueIdentifier", sender: self); 

Maintenant, vous pouvez pousser viewController dans didSelectRowAtIndexpath . Pour sélectionner la première ligne dans la première section ou exécuter whaterver que vous avez écrit dans didSelectRowAtIndexpath: de tableView

Comme pour votre cas, il suffit de pousser le viewController sur select à l'index didSelectRowAtIndexPath avec 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 } 

Il montrera le controller de vue poussé et si vous ne voulez pas animer le controller de vue, passez simplement le NO à la méthode pushViewController .

En appuyant sur le button Back vous revenez à votre viewController

Dans votre cas, écrivez ceci dans votre 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) } 

Vous pouvez également le faire simplement en accédant à la tableView Delegate pour forcer "didSelectRowAtIndex" à tirer

// sélectionne par programme une ligne pour travailler avec

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

// La sélection programmée de la ligne ne triggers pas la fonction "didSelectRowAtIndexPath" donc nous devons forcer manuellement le tir comme ci-dessous

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