2017-01-11 2 views
0

私は本当にこれを理解することに近いです。したがって、iOSメールアプリケーションでは、2つの矢印キーをクリックすると、前の/次のメールに移動します。その右上前/次の機能はiOSメールアプリのようですか?

Screenshot

に私は私の第二viewcontrollerにindexPath値を渡すと、コンソールにで印刷することができました。私はそれから増減することもできます。

if segue.identifier == "DetailVC" { 
let detailVC = segue.destination as! DetailVC 
let indexPath = self.collectionViewIBO.indexPathsForSelectedItems?.last! 
detailVC.index = indexPath 
} 

EDIT 私はからデータを引っ張ってるところです。私のモデルから値を読み込みます。しかし、私はそれにindexPathを割り当てることはできません。以前のビューコントローラからのみ行うことができます

var monster: Monsters! 

私はこのコードを使って "以前の"機能を実装しようとしました。私の見解スタイリングはdisplayDataForIndexPath()機能であり、機能は私のview will appear

@IBAction func monsPreviousIBO(_ sender: Any) { 
    self.index = IndexPath(row: self.index.row - 1, section: self.index.section) 
    displayDataForIndexPath() 

} 

から呼び出された。しかし、それはないすべてはIndexPathを減らしています。何らかの理由でデータが実際に私の機能でリロードされません。私は同じ機能を達成するためにここにいくつかの重要なパズルピースを紛失しています。

func displayDataForIndexPath() { 

    if index.row == 0 { 
     self.monsPreviousIBO.removeFromSuperview() 
    } 

    var monsterName = (String(format: "%03d", monster.speciesId!)) 
    self.navigationItem.title = monster.name! 


    let gif = UIImage(gifName: monsterName) 
    self.gifIBO.setGifImage(gif, manager: gifManager) 
    gifIBO.contentMode = .center 
    guard monster.legendary! != true else { 
     // Value requirements not met, do something 
     monsterStatusLegend() 
     return 
    } 
    guard monster.subLegend! != true else { 
     // Value requirements not met, do something 
     monsterStatusSub() 
     return 
    } 
    guard monster.isMega! != true else { 
     // Value requirements not met, do something 
     monsterStatusMega() 
     return 
    } 
} 
+0

質問に答えるために 'displayDataForIndexPath()'コードを追加する必要があります。どういうわけかあなたは自己を使わない。あなたが 'displayDataForIndexPath()'関数を実行している間のインデックス変数 – muescha

+0

コードを追加してポストを更新しました。うまくいけば、それは私が間違っていたことにいくつかの光を当ててください – baxu

+0

注:index.rowはゼロベースですか? – muescha

答えて

0

を次のように私のdisplayDataForIndex

EDITコードを使用すると、monsterに応じて、すべてのデータを表示していますが、あなたが使用indexPathどのによってmonsterを変更することはありませんです。

この行を追加しindexPathdisplayDataForIndexPath()

monster = getMonster(index.row) 

またはあなたのケースで

@IBAction func monsPreviousIBO(_ sender: Any) { 
    self.index = IndexPath(row: self.index.row - 1, section: self.index.section) 
    monster = mons[self.index.row] 
    displayDataForIndexPath() 
} 

以上からmonsterを投入するためにいくつかのコードを追加します。いくつかの提案

func displayDataForIndexPath() { 

    if index.row == 0 { 
     self.monsPreviousIBO.removeFromSuperview() 
    } 

    monster = mons[self.index.row] 

    //.... 

NOTEを:

  • 私はindexpath> 0を取得した場合、それが有効になっているボタンの行を変更します

    self.monsPreviousIBO.isEnabled = (index.row != 0) 
    
  • だけmonsterIndex = indexPath.rowとして行を保存して、インデックスではなくindexPathでのみ取り扱います。

  • あなたが唯一displayDataForIndexPathでモンスターを使用する場合はモンスターとして現在のモンスターを保存する必要はありません - あなたはただそこに現在のモンスターを取得し、それをこの関数内のローカル変数を持つことができます。

    var monster = mons[self.index.row] 
    
+0

あなたの助けを借りて私はそれを理解することができました!回答をOPに投稿しました。回答に詳細を追加して、私があなたの投稿を受け入れることができるようにしてください。) – baxu

+0

もっと情報を表示するように更新しました – muescha

関連する問題