私はUITabBar
に4つのタブがあります。ページがあるときにtabBar項目が押されたことを検出する
私はtabBarItem
が二回(のような、ユーザーがProfile
項目にProfileVC
とプレスされるようになりました、私はビューをリフレッシュしたい)が押されたときに特定の機能がタブの各ViewController
に呼び出されることをしたいと思います。
ユーザーは、現在表示されているタブを押したときをどのように検出できますか?
ありがとうございました!
私はUITabBar
に4つのタブがあります。ページがあるときにtabBar項目が押されたことを検出する
私はtabBarItem
が二回(のような、ユーザーがProfile
項目にProfileVC
とプレスされるようになりました、私はビューをリフレッシュしたい)が押されたときに特定の機能がタブの各ViewController
に呼び出されることをしたいと思います。
ユーザーは、現在表示されているタブを押したときをどのように検出できますか?
ありがとうございました!
viewWillAppear()
の方法では1つのオプションがリフレッシュされます。そして第2のものはかなり長い。各タブのビューコントローラで
protocol ParentDelegate {
func refresh()
}
class LandingViewController: UIViewController, UITabBarDelegate {
var delegate: ParentDelegate?
var selectedItem: UITabBarItem!
override func viewDidLoad() {
super.viewDidLoad()
self.tabBar.delegate = self
self.selectedItem = self.tabBar.selectedItem
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "SegueNameForDestinationViewController1" {
if let vc = segue.destinationViewController as? YourDestinationViewController1 {
self.delegate = vc.self
}
} else if segue.identifier == "SegueNameForDestinationViewController2" {
if let vc = segue.destinationViewController as? YourDestinationViewController2 {
self.delegate = vc.self
}
}
}
func tabBar(tabBar: UITabBar, didSelectItem item: UITabBarItem) {
if self.selectedItem == item {
self.delegate?.refresh()
}
self.selectedItem = item
}
}
、
class TabViewController: UIViewController, ParentDelegate {
func refresh() {
//write your code here
}
}
2番目の選択肢については、私はストーリーボードを使用していません、どうすればいいですか?ありがとう! –
2番目の答えはストーリーボードを必要としません。あなたは理解していない部分は? – LIH
セグはストーリーボードのためのものですか? –
Uはタブバーのデリゲートメソッドを試してみましたか? –
この回答を見てください。あなたの答えをありがとう、 'viewWillAppear()'は、同じタブ項目をタップすると呼び出されません。[リンク](http://stackoverflow.com/a/5455756/1896921) – AtWork