2016-06-15 5 views
0

私は2つのビューでタブバービューを持つアプリケーションを作ろうとしています。最初のものにはtableViewが含まれています。 2番目の要素では、tableViewに要素を追加できます。私はあなたとの間でコミュニケーションできるようにしたいと思っています。タブバー。 childView segues

タブバーコントローラでタブを切り替えるとどうなりますか?どうすればそれらを傍受できますか?そうでない場合、2つのビュー間で通信する他の可能性はありますか?

答えて

0

あなたは方法tabBarController:didSelectViewController:UITabBarControllerDelegateを使用してビューコントローラ間の実際のスイッチを傍受することができます

ユーザーはタブバーの項目を選択したデリゲートを指示します。

あなたがオブジェクトライブラリに行くことによって行うと、「オブジェクト」を検索することができますきちんと実装があります:

enter image description here

あなたのタブバーのビューコントローラにドラッグし、それがキーとCtrlによって、それのデリゲートを設定するには+ドラッグ。あなたが右のオブジェクトをクリックすると

enter image description here

はあなたが表示されるはずです:

enter image description here

をし、インスペクタでカスタムクラスを設定します。

それを選択してください

enter image description here

ここ

あなたCustomClassの例である:

class CustomClass : NSObject, UITabBarControllerDelegate 
{ 
    func tabBarController(tabBarController: UITabBarController, didSelectViewController viewController: UIViewController) 
    { 
    } 
} 

のViewController paramはあるが:

ユーザが選択したビューコントローラ。 iOS v3.0以降では、これはすでに選択されているビューコントローラと同じである可能性があります。

これは、どのVCであるかを確認する必要があることを意味します。

+0

私はそれをやったが、tabBarController()が実行されません。 – Felix

+0

これはまさにあなたが必要としていることですが、あなたのVCはタブバービューコントローラである必要があることを忘れないでください。 コールバックが機能していない場合は、必要に応じてデリゲートを設定していないことを意味します。したがって、コールバックは発生しますが、customClassでは発生しません。 オブジェクトを右クリックしたときの表示方法を更新しました。 – OhadM

+0

ありがとう、私は自分自身で解決策を見つけました。 'let ctrl = super.parentViewController as! UITabBarController ctrl.viewControllersのsaveCtrl用! { saveCtrlがSaveViewControllerの場合{ print( "Worked") newSaveCtrl = saveCtrlを! SaveViewController newSaveCtrl。saveDelegate = {(newValueに:String)を self.Elemente.append(newValueに) における}正確にそれを呼び出す }} ' – Felix

0

私は解決策を自分で考え出し:

let ctrl = super.parentViewController as! UITabBarController 

    for saveCtrl in ctrl.viewControllers! { 
     if saveCtrl is SaveViewController { 
      print("Worked") 
      let newSaveCtrl = saveCtrl as! SaveViewController 
      newSaveCtrl.saveDelegate = 
       {(newValue: String) in 

        self.Elemente.append(newValue) 

       } 
     } 
    } 
+0

?その代理人はいますか?ユーザーが実際のタップをどのように傍受しますか? – OhadM

+0

これは、tableViewでVCのviewDidLoad()で発生します。アプリケーションを起動すると、このVCが表示され、このコードが実行されます。私のSaveControllerは、TableViewにElementsを追加するもので、saveDelegateはそのコードで初期化され、saveを押すとsaveDelegateが実行されます。あなたがそれを理解することを願っています:P – Felix

関連する問題