私は同時に2つのビューコントローラーを持っています。目標は次のとおりです。メニューを押すと、インデックスが返されます。これにより、更新が必要な他の画面に通知されます。NSNotificationのuserinfoは、ボタンを押したときに積み重ね続けます。
私は次のことをやっている:
コントローラA(メニュー)
func carbonTabSwipeNavigation(carbonTabSwipeNavigation: CarbonTabSwipeNavigation, didMoveAtIndex index: UInt) {
//NSLog("Did move at index: %ld", index)
//NSNotification to send data
NSNotificationCenter.defaultCenter().postNotificationName(NotificationNames.GetIndexCarbonKit, object: nil, userInfo: ["clickedIndex" : Int(index)])
}
コントローラーB(受信機)
override func viewWillAppear(animated: Bool) {
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(SearchResults.didReceiveNotification(_:)), name: NotificationNames.GetIndexCarbonKit, object: nil)
}
func didReceiveNotification(notification: NSNotification) {
let index:Dictionary<String,Int> = notification.userInfo as! Dictionary<String,Int>
let messageFromNotification = index["clickedIndex"]
print(" SearchResults now shows index: \(messageFromNotification)")
}
私の問題は、以下の通りである。ここで辞書私はインデックスをAからBに送り、積み重ねています。私は、メニューを複数回押すのであれば、私の出力は次のようになります。
SearchResults now shows index: Optional(0)
SearchResults now shows index: Optional(1)
SearchResults now shows index: Optional(1)
SearchResults now shows index: Optional(2)
SearchResults now shows index: Optional(2)
SearchResults now shows index: Optional(2)
SearchResults now shows index: Optional(3)
SearchResults now shows index: Optional(3)
SearchResults now shows index: Optional(3)
SearchResults now shows index: Optional(3)
SearchResults now shows index: Optional(1)
SearchResults now shows index: Optional(1)
SearchResults now shows index: Optional(1)
SearchResults now shows index: Optional(1)
SearchResults now shows index: Optional(1)
どのように私は最後のインデックスを得ることができますか?私は他のスタックを必要としません。
ありがとう、私はそれを変更しました。まだ積み重ねることから辞書を止めることはありません。 – SoundShock
私の編集した答えをチェックしてください。 viewDidLoadでも呼び出さないでください。 – Dershowitz123
'func didReceiveNotification'はオブザーバを追加した後にのみ呼び出されるので、私はそれを行うことはできません。したがって、NSNotificationCenter.defaultCenter()。addObserver(self、selector:#selector(SearchResults.didReceiveNotification(_ :)) – SoundShock