2016-03-22 5 views
2

У меня есть UITableViewController, и мне нужно выбрать и прокрутить до одной из ячеек при загрузке представления. Причина, по которой мне нужна выбранная ячейка, а не просто ее выбор (с помощью аксессуара или что-то еще), заключается в том, что я хочу, чтобы у него был другой фон и разделители выше/ниже (что и происходит, когда ячейка таблицы выбрана) и я хочу, чтобы ячейка была изначально видимой (если она слишком далеко вниз).Как выбрать ячейку UITableView программно (Swift 2)

Я прочитал два других ответа, и они не работают, или я их не понимаю. Я не уверен, где я должен поставить self.tableView.selectRowAtIndexPath и self.scrollToRowAtIndexPath. Я попытался положить его в viewDidLoad(), и это не повлияло.

ответ

6

Попробуйте использовать viewDidAppear

func viewDidAppear(animated: Bool){ 
    super.viewDidAppear(animated) 
    let path = NSIndexPath(forRow: 1, inSection: 0) 
    tableView.selectRowAtIndexPath(myPath, animated: false, scrollPosition: UITableViewScrollPosition.None) 
} 
+0

Всего несколько ошибок (в случае, если кто-то просто копирует это) bool должно быть 'Bo ol' и myPath должен быть просто дорогой, иначе он работает. И для меня это лучше работает в 'viewWillAppear()', потому что при использовании в 'viewDidAppear()' существует задержка. – TimSim

+0

let path = NSIndexPath (строка: 1, раздел: 0) mySelfDelegatedTable.selectRow (at: path as IndexPath, анимированный: false, scrollPosition: UITableViewScrollPosition.middle) // работал для меня – Brian

1

Используйте метод selectRowAtIndexPath из UITableView в методе viewDidAppear ваш взгляд контроллера

override func viewDidAppear(animated: Bool) { 
    super.viewDidAppear(animated) 
    // replace forRow: value with the index of the cell 
    // replace inSection: value with the section the cell is in 
    let indexPath = NSIndexPath(forRow: 2, inSection: 0) 
    tableView.selectRowAtIndexPath(indexPath, animated: true, scrollPosition: .Middle) 
} 
0

Swift 4:

override func viewDidAppear(_ animated: Bool) { 
    super.viewDidAppear(animated) 

    let path = IndexPath(row: 0, section: 0) 
    tableView.selectRow(at: path, animated: false, scrollPosition: .none) 
} 
Смежные вопросы