2016-08-09 3 views
0

Я пытался создать приложение, в котором при загрузке представления фокус автоматически переходит в первую ячейку UITableview.Автоматическая установка фокуса на первую ячейку UITableView при просмотре загрузок

Я попытался использовать UIFocusGuide, а затем в prefferedFocusView() метод возвращает таблицуView, но это не сработало.

Я тогда написал этот код

var viewToFocus: UIView? = nil { 
    didSet { 
     if viewToFocus != nil { 
      print("called1 ") 
      self.setNeedsFocusUpdate(); 
      self.updateFocusIfNeeded(); 
     } 
    } 
} 

override weak var preferredFocusedView: UIView? { 
    if viewToFocus != nil { 
     print("called2 ") 

     return viewToFocus; 
    } else { 
     return super.preferredFocusedView; 
    } 
} 

Ввиду сделал нагрузки

 self.viewToFocus = myTableView 

Но это не сработало, а также.

+0

ли в представлении содержится только табличное представление? Или он содержит другие взгляды? –

+0

@ Mr.UB да, у него есть также просмотр коллекции. Я заполняю view view, когда пользователь фокусируется на элементе в uitableview. поэтому по умолчанию первая ячейка должна быть сфокусирована в tableview !!! – Saty

+0

Когда вы говорите 'prefferedFocusView', вы имели в виду' preferredFocusedView'? – halfer

ответ

1

В Tableview: метод WillDisplayCell добавить ниже код

[cell setSelected:YES animated:NO]; 

для первой ячейки

+0

@RNikam ... это выберет ячейку .. Я не хочу этого .. – Saty

1

Вы можете установить позицию прокрутки автоматически, чтобы перейти к верхней ячейке.

let topCell:NSIndexPath = NSIndexPath(forRow: 0, inSection: 0) 
self.tableView.scrollToRowAtIndexPath(topCell, atScrollPosition: UITableViewScrollPosition.None, animated: true) 

Я не уверен, если это то же самое поведение, как preferredFocusedView хотя.

+0

Пытается, что он тоже не работает в tvos – Saty

+0

@ Сати мои извинения Я никогда не замечал, что это было для тв. Надеюсь, что вы его отсортировали –

0

Добавьте следующий фрагмент кода для реализации класса ViewController с Tableview делегат вызывается:

func tableView(tableView: UITableView, canFocusRowAtIndexPath indexPath: NSIndexPath) -> Bool { 
if indexPath.row == 0 { 
    return true 
} 
return false 
} 
+0

Это позволит ему сосредоточить все предметы, кроме первого предмета! – jervine10

+0

Глупая ошибка :) .Пожалуйста, отредактируйте. – Sofeda

6

Я был в состоянии получить, установив tableView.remembersLastFocusedIndexPath = true в viewDidLoad, то я реализовал метод делегата для предпочтительного внимания :

func indexPathForPreferredFocusedView(in tableView: UITableView) -> IndexPath? { 
    return NSIndexPath(forItem: 0, inSection: 0) 
} 

Когда remembersLastFocusedIndexPath - If YES, when focusing on a table view the last focused index path is focused automatically. If the table view has never been focused, then the preferred focused index path is used.

Смежные вопросы