Автоматически выбранная ячейка UITableView - PullRequest
2 голосов
/ 06 октября 2011

Мой UITableView открывается через PopOverViewController, так как я могу автоматически загрузить одну из этих ячеек после загрузки приложения,

процесс выбора ячейки в MainViewController

- (void)setDetailItem:(id)newDetailItem {

    if (detailItem != newDetailItem) {
        [detailItem release];
        detailItem = [newDetailItem retain];

        //---update the view---
        label.text = [detailItem description];
    }

}

и выбор ячейки в TableViewController:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{

    myAppDelegate *appDelegate = 
    [[UIApplication sharedApplication] delegate];
    appDelegate.viewController.detailItem = [list objectAtIndex:indexPath.row];  

}

Я использую этот код в TableViewController, но он не работает! Это означает, что после нажатия на всплывающую кнопку код просто выделите ячейку!

 [myTableView selectRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] animated:NO scrollPosition:0];

Я использовал приведенный выше код в различных методах, таких как viewDidAppear, viewWillAppear и didSelectRowAtIndexPath и ...

Спасибо

1 Ответ

9 голосов
/ 06 октября 2011

При вызове selectRowAtIndexPath:animated:scrollPosition:, tableView:didSelectRowAtIndexPath: - это , а не , вызываемый делегатом.

Из selectRowAtIndexPath: animated: scrollPosition: ссылка:

Вызов этого метода не приводит к тому, что делегат получает сообщение tableView: willSelectRowAtIndexPath: или tableView: didSelectRowAtIndexPath: сообщение, и при этом он не отправляет уведомления UITableViewSelectionDidChangeNotification наблюдателям.

Вместо этогопросто позвонив selectRowAtIndexPath:animated:scrollPosition::

 [myTableView selectRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] animated:NO scrollPosition:0];

, вы можете вызвать методы делегата вручную:

NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0];

if ([myTableView.delegate respondsToSelector:@selector(tableView:willSelectRowAtIndexPath:)]) {
    [myTableView.delegate tableView:self.tableView willSelectRowAtIndexPath:indexPath];
}

[myTableView selectRowAtIndexPath:indexPath animated:YES scrollPosition: UITableViewScrollPositionNone];    

if ([myTableView.delegate respondsToSelector:@selector(tableView:didSelectRowAtIndexPath:)]) {
    [myTableView.delegate tableView:self.tableView didSelectRowAtIndexPath:indexPath];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...