1

OK、これが私の状況で、どの設計アプローチを使用すればよいか本当にわかりません。だから、私は私の特定のケースについていくつかの意見を読んでうれしいです...

シナリオ:

  • タブベースのアプリケーションを持っています
  • 最初に、タブの作成/操作を処理するNSWindowController(例: ) のインスタンスを作成します。MyDocumentManager
  • 各タブには、MyDocument

さて、メニューアクションを実装しようとしています。

  • メニューごとに個別のメニュー コントローラがあります (実際には、NSObject関連するすべての機能をグループ化したサブクラスです)。MyFileMenuController
  • MyFileMenuControllerファイル メニューのアクションは、Interface Builder を介してオブジェクト内のアクションにリンクされています。

質問 :

  • 現在のドキュメントの詳細にアクセスし、関連するすべてのアクションを実行できるように、( my で作成された)についてMyFileMenuController 「知っている」可能性はありますか? 何か案は?どのアプローチが望ましいですか?MyDocumentManagerAppDelegate.m

私のアイデア:

  • クラスからクラスへのオブジェクトの受け渡し (それほど素晴らしい音ではありません)
  • シングルトン (ただし、正直なところ一度も使用したことがなく、それが私の特定のケースであるかどうか/どのように使用されるかはわかりません)
  • 通知と通知リスナー
  • (反対側から見るとわかりませんが) デリゲート メソッド
4

2 に答える 2

0

OK(それが最善の方法かどうかはわかりません)が、これが私がやることに決めたものです:

[[[NSApplication sharedApplication] delegate] MyDocumentManager]

したがって、オブジェクトがAppDelegateの一部である限り、この方法でどこからでもオブジェクトにアクセスできます。

于 2013-02-16T12:20:42.123 に答える
0

appDelegate.rootViewController にリンクされた初期 UIViewController を作成します。

この新しいビュー コントローラー (単に "mainViewController" と呼びます) に、tabBar と menuController を配置します。

あなたのインターフェースは、水平スクロールを行ってメニューを発見する leftBarbutton を備えた facebook に似ていることを理解しています。したがって、この leftBarButton のセレクターでは、次のようなメソッドを呼び出します。

- (void)discoverMenuForDocument:(MyDocument*)document {
    // Set menu configuration for specific document
    // Make animation to discover menu
}

ドキュメントは次のようになります。

self.selectedViewController (<-- You cand make this in several ways depending on your code...) 

(MyDocument*) はオブジェクトではなく単なる参照であることに注意してください。私の意見では、これを実行しても問題はありません。

幸運を!

于 2013-02-16T12:38:46.890 に答える