UITableView проверяет, отображается ли индекс - PullRequest
1 голос
/ 26 ноября 2010

Чтобы получить необходимую высоту ячейки, я реализовал такую ​​функцию, как

+(CGFloat)rowHeightForTableView:(UITableView*)tableView andObject:(NSObject*)theObject {...}

в клетках.

Поскольку tableView является одним из параметров, я могу проверить, является ли это простая или сгруппированная таблица стилей, и включить полученную ширину в мои вычисления. Но как мне проверить, отображается ли индекс?

1 Ответ

2 голосов
/ 26 ноября 2010

Вы можете проверить, отвечает ли источник данных табличного представления на селектор sectionIndexTitlesForTableView: (который источник данных должен реализовать для индексированного табличного представления):

if ([tableView.dataSource 
       respondsToSelector:@selector(sectionIndexTitlesForTableView:)])
{
    NSArray *result = 
             [tableView.dataSource sectionIndexTitlesForTableView:tableView];
    if (result != nil)
        NSLog(@"tableView is currently indexed");
    else
        NSLog(@"tableView is not currently indexed");
}
else
    NSLog(@"tableView does not implement indexing");

Если источник данных отвечает на этот селектор, фактически вызываяпроверка и проверка результата допускают возможность того, что табличное представление в настоящее время возвращает nil из этого метода, потому что оно не хочет показывать индекс по какой-либо причине или если источник данных обрабатывает несколько табличных представлений (некоторые из которых проиндексированы, а некоторыекоторые не).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...