2015-10-02 3 views
5

Ich erstelle eine Test tvOS App. Ich habe ein Bild (außerhalb der Tabellenansicht) und wenn "fokussiert" NICHT ausgewählt ist, möchte ich das Bild ändern ... Ich weiß, dass Apple ein paar Methoden für den Fokus hinzugefügt hat. Könnte mir jemand sagen, mit welchen Methoden ich dieses Bild ändern würde, wenn es im Fokus ist? und wie würde ich es benutzen? Würde ich diese Methode verwenden:UITableView und neue Methoden für tvOS

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

oder würde ich verwenden:

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

Bitte lassen Sie mich wissen! Vielen Dank!

+0

Sie möchten Bild ändern, wenn tableViewCell Fokus ändern ... ist das richtig? –

Antwort

7

Wenn Sie das Bild ändern möchten, wenn UITableViewCell Artikel Fokus erhalten, dann sollten Sie die zweite Methode verwenden.

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

Ich habe nicht UITableView auf tvOS verwendet, aber es scheint, dass, wenn das Element außerhalb des uitable ist, dass es nicht fokussierbar sein wird, die Tabelle Delegatmethoden verwenden. Sie können jedoch die UIImageView mit einer benutzerdefinierten Klasse erweitern, und dann außer Kraft setzen wie:

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

Wenn Sie Schwierigkeiten stoßen auf zum Imageview von der UITableView navigieren, müssen Sie möglicherweise eine UIFocusGuide verwenden, um die beiden Bereiche zu überbrücken.