2010-11-28 10 views
3

このビューの設定を検討してください。別のクラスからインスタンスメソッドを呼び出す

alt text

Iサブビューのセットを切り替えるビュー・コントローラを有しています。各サブビューは、カスタムコードを持つUIViewサブクラスです。ビューを切り替えるには、新しいビューを現在のビューとして割り当てるswitch文を使用します。これは非常にうまくいく。

私は現在、私がUITableViewを含むサブビュー(PopUp)を持つビュー(MainMenu)を持っている位置にいます。 PopUpビューは、MainMenu.hクラスのインスタンスメソッドを介して表示および非表示にされます。 showPopUpメソッドとhidePopUpメソッドを呼び出します。

ユーザがUITableViewからアイテムを選択すると、hidePopUpメソッドにバインドされている閉じるボタンをクリックして、そのアイテムを含む(PopUp)ビューを手動で閉じる必要があります。

ユーザーがUITableViewでアイテムを選択すると、hidePopUpメソッドを自動的に起動する必要があります。

UITAbleViewのdidSelectRowAtIndexPath経由でhidePopUpインスタンスメソッドをトリガーするにはどうすればよいですか?これは、アプリケーションデリゲート、あるいはおそらくNSNotificationCenterの仕事ですか?私は事前に無駄にdidSelectRowAtIndexPathから

[[[UIApplication sharedApplication] delegate] closePopUp]; 

...

感謝を呼び出すようなものを試してみた、それはおそらく私が欠けているシンプルなものです。インフルエンザでのプログラミングは難しい!

+0

私はあなたがMAINVIEWに閉じるボタンをバインドする方法を理解していませんが、ノーのUITableView:

は、ここでは、このルートを行くことを選択した場合、デリゲートを実装する方法に大きな柱です。あなたはロジックを閉じるボタンの中にtableViewのdidSelectRowAtIndexに入れませんか? –

+0

UITableViewサブクラスのインスタンスメソッドの内部からMainViewクラス内のオブジェクトを参照することはできません。これが私が思う代理人が必要な理由です – Timbo

答えて

1

通知やアプリデリゲートのようなシングルトンでの作業など、これを達成する方法はいくつかあります(ただし、シングルトン[anti]パターンの使用には論争がありません)。個人的には、私は代表団を使っています。以下のような

何か:

@protocol PopUpDelegate 
@optional 
- (void)Popup:(YourPopUpClass *)popUp didEndWithData:(NSData *)blah; 
@end 

あなたは、その後、あなたのメインメニューで、このプロトコルを実装するポップアップのデリゲートとして割り当てることができが、閉じるボタンが押されたポップアップ呼び出しデリゲートのメソッドを持っており、そこからポップアップを閉じます。 How do I create delegates in Objective-C?

関連する問題