pods library eureka custom best awesome ios uitableview swift

ios - library - swift libraries



Emula programáticamente la selección en UITableViewController en Swift (2)

Perdón por la pregunta sin ninguna línea de código. Necesito consejos sobre cómo proceder, si es posible, lo que quiero.

En lenguaje Swift.

Supongamos que hay una aplicación con dos controladores: UITableViewController con NavigationController integrado, como principal. Cuando selecciona una fila en la tabla, abre UIViewController , que muestra información detallada sobre el valor seleccionado.

¿Es posible hacer lo contrario? Cuando se inicia la aplicación, emula mediante programación la selección de la primera fila en la tabla e inmediatamente muestra UIViewController con información detallada sobre el valor seleccionado. Y desde este controlador es posible volver a UITableViewController través del NavigationController .

Una vez más, me disculpo y gracias de antemano!


Sí, puede hacerlo rápidamente. Simplemente cargue su tableViewController como de costumbre. Solo tiene que llamar

En 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 función selectRowAtIndexPath no desencadenará métodos de delegado como didSelectRowAtIndexPath: por lo tanto, debe activar manualmente este método delegado.

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

O si está presionando ViewControllers con segue, tiene que desencadenar performSegueWithIdentifier

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

Ahora puede presionar viewController en didSelectRowAtIndexpath . Para seleccionar la primera fila en la primera sección o ejecutar lo que haya escrito en didSelectRowAtIndexpath: of tableView

En cuanto a su caso, simplemente presione el viewController de viewController en seleccionar en el 0 ° índice con 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 }

pushViewController el controlador de vista presionado y si no desea animar el controlador de vista simplemente pase NO al método pushViewController .

Al presionar el botón Back viewController a tu vista viewController

En tu caso, solo tienes que escribir esto en tu 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) }


También puede hacer esto simplemente accediendo al delegado tableView para forzar "didSelectRowAtIndex" para disparar

// programáticamente seleccione una fila para trabajar con

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

// La selección por programación de la fila no desencadena la función "didSelectRowAtIndexPath", por lo que debemos forzar manualmente la activación según se detalla a continuación

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