2015-10-02 10 views
5

Sto creando un'app di prova TVOS. Ho un'immagine (al di fuori della tableview) e quando "focalizzato" NON è selezionato, vorrei che l'immagine cambiasse ... So che la mela ha aggiunto un paio di metodi di messa a fuoco. Qualcuno potrebbe dirmi quali metodi utilizzare per cambiare questa immagine per quando è in "focus"? e come lo userei? dovrei utilizzare questo metodo:UITableView e nuovi metodi per tvOS

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

o dovrei usare:

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

prega fatemi sapere! Grazie!

+0

Si desidera modificare l'immagine quando tableViewCell cambia focus ... è corretto? –

risposta

7

Se si desidera cambiare l'immagine quando l'elemento UITableViewCell ottiene lo stato attivo, è necessario utilizzare il secondo metodo.

- (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

Non ho usato UITableView su TVOS, ma sembra che se l'articolo è fuori dal datto che non sarà attivabile utilizzando i metodi tavolo delegato. Tuttavia, si potrebbe estendere l'UIImageView con una classe personalizzata, e quindi sovrascrivere come:

- (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; 
} 

Se si esegue in difficoltà navigazione al ImageView dal UITableView, potrebbe essere necessario utilizzare un UIFocusGuide per colmare le due aree.