2011-01-28 10 views
2

私の質問は、一般的にビューコントローラ、デリゲートについてです。私はUIView、UIViewController、Delegates、およびSourcesを完全に快適に感じます。例えば、UITableViewはそうです。それはすべて意味をなさない。MVCの基本:カスタムビューにUIViewController、Delegate、またはSourceを追加する必要がありますか?

私は最初の実際のカスタムビューを実装しました。関係するXIBはありません。これはMailアプリケーションのようなオートコンプリート・アドレス・ピッカーです。受信者が追加されるたびに青いボタンが作成され、元のようなキーボードがすべてサポートされます。

サブクラスのUIView。コントローラーもデリゲートもソースもありません。私はそれらのいずれかを持っている必要があるのだろうか?すべてを、クリーンな実装にする。

ビューコントローラが私の場合に行う意味では私の指を置くことができません。私のカスタムビューは、コントロールのように機能し、UIButtonにはコントローラもありません。 ビューのケースでは何が制御されますか?

私の考えのいくつか:

ソースの場合:現在のビューは、それが自動的に補完アドレスが含まれているプロパティ「PossibleAutocompleteRecipients」を持っています。私はこれが "ソース"実装の候補になると思います。しかし、それは本当にそれの価値があるのですか?コントローラをビューに渡してプロパティをコントローラに配置したいと思います。

選択した受信者は、 "SelectedRecipients"プロパティを使用して取得できます。しかし、ビューには値を格納しないでください。それはどこに行くのだろうか?コントローラーに?

"AllowSelectionFromAddressBook"のようなプロパティはどうですか?ここでもUIButtonと比較すると、これらのプロパティはボタンの「安全な」プロパティに似ています。だから、彼らは視野に入ることが許されている。

デリゲートには、 "WillAddRecipient"、 "WillRemoveRecipient"などのメソッドがあり、ユーザーはアクションが発生しないようにTRUE/FALSEを戻すことができます。正しい?

UIViewからではなく、まずUIControlから継承する必要がありますか?

最後に、私のカスタムビューは、デバイスが回転していると完全に回転します。なぜすべてのビューをしないのですか?なぜShouldAutoRotateToDeviceOrientation()を実装するコントローラが必要なのでしょうか?

上記の記述は意味がありますか?最終的には、私のウェブサイトにソースを提供します。私はそれを実装するのに時間がかかり、MonoTouchでMail-Appのようなオートコンプリートコントロールの同様の実装が見つからないので、共有したいと思います。 私はできるだけ多くのことを学び、理解し、それをソースに含めるだけです。

ルネ

答えて

1

私はあなたの質問の一部に答えることができます。

私はちょうど 私の場合

でのViewControllerビューの状態遷移を処理するための責任があるビューコントローラはなるだろう 感覚に私の指を置くことはできません(負荷など、回転し、表示されます)これらのトランジションは、主にナビゲーションコンポーネント(UINavigationViewController、UITabBarController)を使用する場合に使用されます。これらのコンポーネントは、ビューのトランジションを処理するViewControllerを受け取る必要があります。

たとえば、UINavigationViewControllerでViewControllerを押すと、ViewDidLoad、ViewWillAppear、ViewDidAppearが発生します。また、ViewWillDisappear、現在のViewControllerのViewDidDisappearも発生します。

アプリケーションにポートレートビューが1つしかない場合は、ViewControllerは不要です。カスタムビューをメインウィンドウのサブビューとして追加することができます。

+0

私は一般的にビューコントローラの感覚を得る。しかし、この場合ではなく、私のコントロールはうまく動作しません。しかし、どこに線を描いていますか?ビューコントローラはいつ使用する必要がありますか?私のコントロールで回転もうまくいきます。 UITextFieldにはコントローラーもなく、うまく回転します。それは私に少し困惑しているものです。 – Krumelur