2016-08-05 2 views
1

XcodeのtvOS「タブ付きアプリケーション」の選択肢を使用してテストtvOSアプリケーションを作成しました。最初のタブビューコントローラでは、単純なテキストセルを含むUIcollectionViewを配置します。tvOS:TabBarとUICollectionViewの間のフォーカス変更を処理してクラッシュを防止する方法

アプリが実行されると、タブバーからフォーカスを受け入れるUICollectionViewに移動することができ、問題なしでビューの項目間を移動できます。

しかし、UICollectionViewからタブバーまで戻って移動しようとすると、次のメッセージとアプリがクラッシュ:

は(「tabtest.itemCell」にタイプ「UITabBarButton」(0x199b92828)の値をキャストできませんでした0x1000153c8)。

これは、フォーカスエンジンがコレクションビューを「見る」だけで、UITabBarButtonへのジャンプを処理するコードを追加する必要があることを意味します。

私は、フォーカスの変更を処理する方法に関する情報を高低に検索しており、何も特定されていません。 iOS/tvOS開発の新機能であることから、私は明らかに何か不足しているでしょう。

タブバーとUICollectionViewの間のフォーカスを管理する方法を教えてもらえますか?ここで

は私がUICollectionViewためのフォーカスを処理するために使用していたコードです:

// For Focus Engine 
func collectionView(collectionView: UICollectionView, didUpdateFocusInContext context: UICollectionViewFocusUpdateContext, withAnimationCoordinator coordinator: UIFocusAnimationCoordinator) { 
} 

func collectionView(collectionView: UICollectionView, shouldUpdateFocusInContext context: UICollectionViewFocusUpdateContext) -> Bool { 
    if let cell: UICollectionViewCell = context.nextFocusedView as! itemCell{ 
     _ = self.collectionView.indexPathForCell(cell) 
    } 
    return true 
} 

答えて

0

答えは、 "if let cell ...。"必要ではなかった。以下を追加することで、正常に動作するようになりました。フォーカスエンジン

func collectionView(collectionView: UICollectionView, didUpdateFocusInContext context: UICollectionViewFocusUpdateContext, withAnimationCoordinator coordinator: UIFocusAnimationCoordinator) { 
} 

func collectionView(collectionView: UICollectionView, canFocusItemAtIndexPath indexPath: NSIndexPath) -> Bool { 
    return true 
} 

func collectionView(collectionView: UICollectionView, shouldUpdateFocusInContext context: UICollectionViewFocusUpdateContext) -> Bool { 
    return true 
} 

func collectionView(collectionView: UICollectionView, shouldSlectItemAtIndexPath context: UICollectionViewFocusUpdateContext) -> Bool { 
    return true 
} 
0

あなたはここで働いて、フォーカスのために任意のコードを追加する必要はありません。コンソールで表示されるエラーメッセージは、as! itemCellキャストのためです:フォーカスがコレクションビューからタブバーに移動するとき、context.nextFocusedViewはコレクションビューのセルではなくUITabBarButtonになります。私は正直なところ、スウィフトを十分に知らないのですが、もしあなたが!を取り除くと、このクラッシュが見えなくなるはずですか?

+0

遅ればせながら感謝ジャスティンのために

//。私は最終的にコードがちょうど間違っていることを最終的に理解することによって、ついにそれを理解しました「if let cell:...」とは、不要でクラッシュを招いていた。 –

関連する問題