ios - example - uitableview swift4



Emulazione programmatica della selezione in UITableViewController in Swift (2)

Sì, puoi farlo in swift. Carica il tuo TableViewController come al solito. Devi solo chiamare

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

La funzione selectRowAtIndexPath non attiverà metodi delegati come didSelectRowAtIndexPath: quindi è necessario attivare manualmente questo metodo delegato

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

Oppure Se stai spingendo ViewControllers con i passaggi devi attivare performSegueWithIdentifier

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

Ora puoi premere viewController in didSelectRowAtIndexpath . Per selezionare la prima riga nella prima sezione o eseguire whaterver che hai scritto in didSelectRowAtIndexpath: of tableView

Come per il tuo caso basta premere viewController su select al didSelectRowAtIndexPath index 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 il controller della vista premuto e se non si desidera animare il controller della vista basta passare NO al metodo pushViewController .

Premendo il tasto Back si ritorna al viewController

Nel tuo caso scrivi questo nel tuo 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)
}

https://src-bin.com

Ci scusiamo per la domanda senza alcuna riga di codice. Ho bisogno di consigli su come procedere, se possibile ciò che voglio.

In una lingua Swift.

Supponiamo che ci sia un'app con due controller: UITableViewController con NavigationController incorporato, come principale. Quando si seleziona una riga nella tabella, viene visualizzato UIViewController , che visualizza informazioni dettagliate sul valore selezionato.

È possibile fare diversamente? All'avvio dell'applicazione, emula la selezione della prima riga della tabella e visualizza immediatamente UIViewController con informazioni dettagliate sul valore selezionato. E da questo controller è possibile tornare a UITableViewController tramite NavigationController .

Ancora una volta mi scuso e vi ringrazio in anticipo!


Answer #1

Puoi anche farlo semplicemente accedendo al delegato tableView per forzare "didSelectRowAtIndex" a sparare

// seleziona in modo programmatico una riga su cui lavorare

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

// La selezione di una riga non attiva la funzione "didSelectRowAtIndexPath", quindi è necessario forzare manualmente l'attivazione come da

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




swift