私は2つのビューでタブバービューを持つアプリケーションを作ろうとしています。最初のものにはtableViewが含まれています。 2番目の要素では、tableViewに要素を追加できます。私はあなたとの間でコミュニケーションできるようにしたいと思っています。タブバー。 childView segues
タブバーコントローラでタブを切り替えるとどうなりますか?どうすればそれらを傍受できますか?そうでない場合、2つのビュー間で通信する他の可能性はありますか?
私は2つのビューでタブバービューを持つアプリケーションを作ろうとしています。最初のものにはtableViewが含まれています。 2番目の要素では、tableViewに要素を追加できます。私はあなたとの間でコミュニケーションできるようにしたいと思っています。タブバー。 childView segues
タブバーコントローラでタブを切り替えるとどうなりますか?どうすればそれらを傍受できますか?そうでない場合、2つのビュー間で通信する他の可能性はありますか?
あなたは方法tabBarController:didSelectViewController:でUITabBarControllerDelegateを使用してビューコントローラ間の実際のスイッチを傍受することができます
ユーザーはタブバーの項目を選択したデリゲートを指示します。
あなたがオブジェクトライブラリに行くことによって行うと、「オブジェクト」を検索することができますきちんと実装があります:
あなたのタブバーのビューコントローラにドラッグし、それがキーとCtrlによって、それのデリゲートを設定するには+ドラッグ。あなたが右のオブジェクトをクリックすると
はあなたが表示されるはずです:
をし、インスペクタでカスタムクラスを設定します。
それを選択してください
ここあなたCustomClassの例である:
class CustomClass : NSObject, UITabBarControllerDelegate
{
func tabBarController(tabBarController: UITabBarController, didSelectViewController viewController: UIViewController)
{
}
}
のViewController paramはあるが:
ユーザが選択したビューコントローラ。 iOS v3.0以降では、これはすでに選択されているビューコントローラと同じである可能性があります。
これは、どのVCであるかを確認する必要があることを意味します。
私は解決策を自分で考え出し:
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)
}
}
}
私はそれをやったが、tabBarController()が実行されません。 – Felix
これはまさにあなたが必要としていることですが、あなたのVCはタブバービューコントローラである必要があることを忘れないでください。 コールバックが機能していない場合は、必要に応じてデリゲートを設定していないことを意味します。したがって、コールバックは発生しますが、customClassでは発生しません。 オブジェクトを右クリックしたときの表示方法を更新しました。 – OhadM
ありがとう、私は自分自身で解決策を見つけました。 '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