#ios #ipad #uitableview #uipopovercontroller
#iOS #iPad #uitableview #uipopovercontroller
Вопрос:
У меня есть меню, которое UITableview
находится в a UIPopovercontroller
, которое при выборе прокручивает UIScollView родительского представления до определенного кадра.
Он отлично работает.
Проблема в том, что если вы используете PageControl для прокрутки фрейма, мне нужно обновить выбранную строку в таблице [_delegate returnPageNumber]
, возвращает текущий PageControl.currentPage
Ошибок нет, NSLog сообщает правильный номер страницы:
scrollIndexPath is <NSIndexPath 0x1a3380> 2 indexes [0, 3]
Но правильная ячейка не выделяется … почему????
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
//[tableView reloadData];
int isPage = [_delegate returnPageNumber];
NSIndexPath *scrollIndexPath = [NSIndexPath indexPathForRow:(isPage) inSection:0];
NSLog(@"scrollIndexPath is %@",scrollIndexPath);
[tableView selectRowAtIndexPath:scrollIndexPath animated:NO scrollPosition:UITableViewScrollPositionNone];
}
Я пытался поместить [tableView reloadData]
before и after и иметь код в viewDidAppear … ничего не работает
Комментарии:
1. Почему вы не используете -didSelectRowAtIndexPath ?
Ответ №1:
попробуйте вызвать [super viewWillAppear]
после всего остального, в viewWillAppear
:
- (void)viewWillAppear:(BOOL)animated
{
NSIndexPath *selection = [self.tableView indexPathForSelectedRow];
[[self tableView] reloadData];
if (selection)
{
[[self tableView] selectRowAtIndexPath:selection animated:NO scrollPosition:UITableViewScrollPositionNone];
}
[super viewWillAppear:animated]; //Trick is calling super last in this case. Then you can retrieve previously selected row to --> NSIndexPath *selection
}
Ответ №2:
Теперь работает!
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
[[self tableView] reloadData];
int isPage = [_delegate returnPageNumber];
NSIndexPath *scrollIndexPath = [NSIndexPath indexPathForRow:(isPage) inSection:0];
NSLog(@"viewDidAppear scrollIndexPath is %@",scrollIndexPath);
[[self tableView] selectRowAtIndexPath:scrollIndexPath animated:YES scrollPosition:UITableViewScrollPositionNone];
}
Разница заключалась в отключении выхода view и последующем повторном подключении его к tableview. Не уверен, почему это имело значение? Я попытался добавить контроллер представления в перо, но это не имело никакого значения, поэтому его удаление и повторное подключение представления к tableview внезапно дали результаты. Вуду.