He añadido una barra de búsqueda a mi vista de tabla, y a medida que el usuario busca, quiero la vista de tabla para desplazarse por el texto que tu escrito.

¿Cómo puedo hacer el scroll de desplazamiento ver automáticamente?

Esto es lo que he intentado, pero me da un error que dice que un Entero no es convertible a un índice de Ruta. ¿Qué debo hacer?

self.tableview.scrollToRowAtIndexPath(1, atScrollPosition: UITableViewScrollPosition.Middle, animated: true)

o

self.tableview.scrollToNearestSelectedRowAtScrollPosition(scrollPosition: UITableViewScrollPosition.Middle, animated: true)
InformationsquelleAutor nachshon f | 2015-03-31

6 Comentarios

  1. 29

    Usted tiene que llamar al método scrollToRowAtIndexPath de la siguiente manera :

    var indexPath = NSIndexPath(forRow: numberOfRowYouWant, inSection: 0)
    self.tableview.scrollToRowAtIndexPath(indexPath, 
                   atScrollPosition: UITableViewScrollPosition.Middle, animated: true)

    El ejemplo anterior supongamos que usted tiene sólo una sección. Espero que esto ayude.

    Para Swift 3:

    let indexPath = NSIndexPath(item: numberOfRowYouWant, section: 2)
    tableView.scrollToRow(at: indexPath as IndexPath, at: UITableViewScrollPosition.middle, animated: true)

    Para Swift 4:

    let indexPath = NSIndexPath(item: numberOfRowYouWant, section: 2)
    tableView.scrollToRow(at: indexPath as IndexPath, at: UITableView.ScrollPosition.middle, animated: true)
    • cuando usted havent una barra de búsqueda, sólo una mesa normal: llamada en viewDidAppear() y tiene una bonita animación, viewDidload trabajó también para mí, pero sin animación
    • su trabajo muy bien,gracias por la respuesta adecuada.
  2. 9

    Para Swift 4.2 ( Xcode 12.1 ):

        let numberOfSections = self.tableView.numberOfSections
        let numberOfRows = self.tableView.numberOfRows(inSection: numberOfSections-1)
    
        let indexPath = IndexPath(row: numberOfRows-1 , section: numberOfSections-1)
        self.tableView.scrollToRow(at: indexPath, at: UITableView.ScrollPosition.middle, animated: true)

    Para Swift 2:

        let numberOfSections = self.tableView.numberOfSections
        let numberOfRows = self.tableView.numberOfRows(inSection: numberOfSections-1)
    
        let indexPath = IndexPath(row: numberOfRows-1 , section: numberOfSections-1)
        self.tableView.scrollToRow(at: indexPath, at: UITableViewScrollPosition.middle, animated: true)
  3. 5

    Si quieres desplácese hacia abajo automáticamente:

    numberOfSections = tableView.numberOfSections()
    let numberOfRows = tableView.numberOfRowsInSection(numberOfSections-1)
    
    var indexPath = NSIndexPath(forRow: numberOfRows, inSection: numberOfSections)
    self.tableview.scrollToRowAtIndexPath(indexPath, 
                   atScrollPosition: UITableViewScrollPosition.Middle, animated: true)

    Swift 4:

    let numberOfSections = tableView.numberOfSections
    let numberOfRows = tableView.numberOfRows(inSection: numberOfSections - 1)
    
    let indexPath = NSIndexPath(row: numberOfRows, section: numberOfSections)
    self.tableView.scrollToRow(at: indexPath as IndexPath,
                                      at: UITableView.ScrollPosition.middle, animated: true)
    • Aunque el código es apreciado, que siempre debe de tener una explicación que acompaña. Esto no tiene que ser largo, pero se espera.
    • Gracias por compartir el código! Yo hice referencia a que es la creación de una versión actualizada de Swift 2.0.
    • Gracias, me ayudan mucho!
  4. 3

    Aquí está el Swift versión 2.0 para desplazarse a la última fila de varias secciones, basado en el código de Thiago anteriormente en este hilo:

    let numberOfSections = self.tableView.numberOfSections
    let numberOfRows = self.tableView.numberOfRowsInSection(numberOfSections-1)
    
    print ("scrolling to bottom row \(numberOfRows)")
    
    let indexPath = NSIndexPath(forRow: numberOfRows-1, inSection: numberOfSections-1)
    self.tableView.scrollToRowAtIndexPath(indexPath,
                            atScrollPosition: UITableViewScrollPosition.Middle, animated: true)
  5. 0

    SWIFT 4

    /* Variables */
      var scrollTimer = Timer()
    
    
    // AN AUTOMATIC SCROLL OF THE YOUT IMAGE
    scrollTimer = Timer.scheduledTimer(timeInterval: 3.0, target: self, selector: #selector(automaticScroll), userInfo: nil, repeats: true)
    
    
    
    
    //MARK: - SCROLLVIEW DELEGATE: SHOW CURRENT PAGE IN THE PAGE CONTROL
    func scrollViewDidScroll(_ scrollView: UIScrollView) {
        let pageWidth = containerScrollView.frame.size.width
        let page = Int(floor((containerScrollView.contentOffset.x * 2 + pageWidth) / (pageWidth * 2)))
        pageControl.currentPage = page
    
    }
    
    //MARK: - AUTOMATIC SCROLL
    @objc func automaticScroll() {
        var scroll = containerScrollView.contentOffset.x
        if scroll < CGFloat(view.frame.size.width) * CGFloat(numberOfImages-1) {
            scroll += CGFloat(view.frame.size.width)
            containerScrollView.setContentOffset(CGPoint(x: scroll, y:0), animated: true)
        } else {
            //Stop the timer
            scrollTimer.invalidate()
        }
    }
    • Parece que has publicado de respuesta para UICollection vista no para UITableView como UITableView no pueda desplazarse a la posición horizontal.
  6. -1

    Swift 4:

    let indexPath = IndexPath(row: numberOfRowYouWant, section: 0) 
    
    self.verbsTable.scrollToRow(at: indexPath, at: UITableViewScrollPosition.middle, animated: true)

Dejar respuesta

Please enter your comment!
Please enter your name here