2015-10-02 4 views
5

Я создаю тестовое приложение tvOS. У меня есть изображение (вне таблицы), и когда «сфокусированный» не выбран, мне бы хотелось, чтобы изображение менялось ... Я знаю, что яблоко добавило пару методов для фокусировки. Может ли кто-нибудь сказать мне, какие методы я бы использовал, чтобы изменить это изображение, когда оно находится в «фокусе»? и как я буду использовать его? ли я использовать этот метод:UITableView и новые методы для tvOS

- (BOOL)tableView:(UITableView *)tableView canFocusRowAtIndexPath:(NSIndexPath *)indexPath 

или же я использую:

- (void)tableView:(UITableView *)tableView didUpdateFocusInContext:(UITableViewFocusUpdateContext *)context withAnimationCoordinator:(UIFocusAnimationCoordinator *)coordinator 

Пожалуйста, дайте мне знать! Спасибо!

+0

Вы хотите изменить изображение при изменении фокуса TableViewCell ... это правильно? –

ответ

7

Если вы хотите поменять картинку, если UITableViewCell пункт получить фокус, тогда вы должны использовать второй метод.

- (void)tableView:(UITableView *)tableView didUpdateFocusInContext:(UITableViewFocusUpdateContext *)context withAnimationCoordinator:(UIFocusAnimationCoordinator *)coordinator 
{ 
    //You can get focused indexPath like below 
    NSIndexPath *nextIndexPath = [context nextFocusedIndexPath]; 
    // Now get image from data source, I will assume you have an images array 
    UIImage *image = [_imagesArray objectAtIndex:nextIndexPath.row]; 
    // Set image to image view, assuming you have a property imageView 
    _imageView.image = image; 
} 
0

Я не использовал UITableView на tvOS, но мне кажется, что если элемент находится вне UITable, что он не будет фокусируемым с помощью методов таблицы делегата. Тем не менее, вы можете расширить UIImageView с пользовательским классом, а затем переопределить как:

- (void) didUpdateFocusInContext:(UIFocusUpdateContext *) context withAnimationCoordinator:(UIFocusAnimationCoordinator *)coordinator 
{ 
    if (context.nextFocusedView == self){ 
     // change image 
     self.image = focusedImage; 
    } else { 
     // restore view 
     self.image = normalImage; 
    } 

} 
- (void)canBecomeFocused 
{ 
    return YES; 
} 

Если вы столкнетесь с трудностями, плавающих в ImageView от UITableView, вам, возможно, придется использовать UIFocusGuide соединить две области.

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