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