У меня есть UISplitViewController с табличным представлением для навигации. Это похоже на приложение Mail. Когда вы нажимаете на представление таблицы в портретном режиме, всплывающее окно скрывается. Когда вы нажимаете на навигационную панель, чтобы получить всплывающее окно, выбранный элемент больше не отображается. Как сделать этот элемент выбранным без повторного выбора элемента? (Так же, как в почтовом приложении)UITable cell selection в SplitViewController
ответ
У меня есть решение, которое работает, но это расстраивает хакки. Мне нужно дважды вызвать selectRowAtIndexPath. Кажется, что cellForRowAtIndexPath отменяет выбор, сделанный в viewWillAppear. Тем не менее, его все еще нужно вызвать в viewDidAppear, так что представление прокручивается до правильной позиции до вызова cellForRowAtIndexPath.
- (void)viewWillDisappear:(BOOL)animated
{
NSIndexPath *selected = [self.tableView indexPathForSelectedRow];
_selectedRow = selected.row;
}
- (void)viewDidAppear:(BOOL)animated
{
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:_selectedRow inSection:0];
[self.tableView selectRowAtIndexPath:indexPath animated:NO scrollPosition:UITableViewScrollPositionMiddle];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
//initialize cell code here...
if (indexPath.row == _selectedRow) {
[self.tableView selectRowAtIndexPath:indexPath animated:NO scrollPosition:UITableViewScrollPositionMiddle];
}
}
Есть ли у вас какие-либо изменения
[tableView deselectRowAtIndexPath:indexPath animated:YES];
в вашем didSelectRowAtIndexPath в RootViewController?
Для вашего контроллера табличного вида вызывается -viewWillAppear:
, прежде чем появится всплывающее окно? Если да, то вы могли бы написать это как так:
- (void)viewWillAppear:(BOOL)animated
{
[self.tableView selectRowAtIndexPath:<indexPath>
animated:animated
scrollPosition:UITableViewScrollPositionMiddle];
[super viewWillAppear:animated];
}
Очевидно, что заменить <indexPath>
с правильным индексом пути и установить позицию прокрутки, как вы хотите. Вы также можете передать NO
вместо animated
, чтобы он выглядел так, как будто он был выбран до появления представления.
Это не сработало. Что-то отменяет элементы tableview после вызова видаDidAppear. – rob
В вашем методе viewDidLoad, вы называете
self.clearsSelectionOnViewWillAppear = NO;
?
Вот как это делает шаблон SplitView Xcode.
- 1. Настройка UITable/Cell width
- 2. uitableview cell selection style
- 3. Добавление динамического изображения в UITable View Cell
- 4. Java JTable Multiple Cell Selection
- 5. Excel 2010 Cell Selection Macro
- 6. Swift collectionView select cell multiple selection
- 7. UICollectionView: minimumInteritemSpacing change on cell selection
- 8. GWT Cell Tree Right Click Selection
- 9. UISlider значение, автоматически назначаемое при прокрутке в UITable View Cell
- 10. iPhone/iPad UITable Swipe to Delete Resizes/shift Cell
- 11. пользовательский UITable cell, как построить с уникальным включенным состоянием объекта?
- 12. Нажатие SplitViewController из другого SplitViewController
- 13. SplitViewController BUG?
- 14. UITable view overlapping
- 15. UITable, Как назначить делегатов UITable In Swift IOS
- 16. SplitViewController не отображается
- 17. Передача данных UItable в UItable через NSObject
- 18. Использование Parse.com для загрузки UIWebView из UITableView Cell Selection
- 19. UITable не заполняется NSMutableArray
- 20. Исключение относительно UITable view
- 21. Отображение пользовательской ячейки в UITable
- 22. Чат и UITable
- 23. Ошибка памяти от UITable
- 24. SplitViewController запрос
- 25. SplitViewController в WPF
- 26. Добавление TabBarController в splitViewController
- 27. Добавить SplitViewController в Tabbar
- 28. SplitviewController в navigationviewcontroller
- 29. Замените TableView в SplitViewController
- 30. SearchBar в SplitViewController
Нет. Это не называется где-либо, насколько я могу судить, но он ведет себя так, как будто это так. Когда я вызываю selectCellAtIndexPath в viewDidAppear или cell.selected = YES, он немедленно отменяется. Вы знаете, где это можно назвать? – rob