-1

まず、私はobject-cの初心者で、勉強中です。

男が別のトピックで私に提案したように、デリゲートを学ぶためだけに、簡単なアプリを作成しようとしています。

状況: - 絵コンテ; - UITabBarController; -UIViewController。

アプリはタブ バー コントローラー (FirstViewController と SecondViewController) から開始する必要があります。FirstViewController から ViewController (ThirdViewController) に移動したいのですが、スライダーと戻るボタンがあります。デリゲートを使用して、スライダーのコンテンツを ThirdViewController から FirstViewController に渡そうとしました。

アプリを実行すると、スプラッシュ スクリーンの後にクラッシュし、次のメッセージが表示されます。

2013-02-05 19:16:08.382 PassDataBetweenTabsUsingDelegate[3761:c07] -[SecondViewController setDelegate:]: インスタンス 0x74c4ed0 に送信された認識されないセレクター 2013-02-05 19:16:08.384 PassDataBetweenTabsUsingDelegate[3761:c07]キャッチされない例外 'NSInvalidArgumentException' のため、理由: '-[SecondViewController setDelegate:]: 認識されないセレクターがインスタンス 0x74c4ed0 に送信されました'

こちらも全体のプロジェクトコードですが、コードの一部をコピペした方が早いです。

私はデリゲートに間違っているのでしょうか、それともサードビューコントローラーに最初に行く必要があり、セカンドを気にしないことを伝える方法がわかりませんか?

4

1 に答える 1

1

問題は次の行にあります。

ThirdViewController *svc = [self.tabBarController.viewControllers objectAtIndex:1];

[self.tabBarController.viewControllers objectAtIndex:1] は、タブ バーに追加していないため、ThirdViewController のインスタンスを返しません。モーダル セグエを介して、ThirdViewController を FirstViewController に接続しました。

代わりに行う必要があるのは、ThirdViewController のインスタンスを作成し、そのデリゲートを設定してからモーダルに表示することです。

于 2013-02-05T19:20:50.343 に答える