2011-06-26 8 views
0

私の論理が健全かどうか教えてください。私はiOS(まだ1週間ほど)にはまだ新しいので、間違った方向に向かう前にあなたのフィードバックを本当に感謝します。UIScrollviewは、コアデータ属性で構成されたカスタムUIViewを表示します。

写真エンティティを使用して私のコアデータをセットアップしました。私がしようとしているのは、私のUIScrollView内にオブジェクトのような「ノートカード」を作成することです。ノートカードの上部にはUILabelが、中央にUIImage、画像の下に2つのUIButtonが表示されます(ボタンは「送信」または「キャンセル」されます)。私の目標は、これらのメモカードのようなオブジェクトを、ページターナーを含む絵のようにスクロール可能にすることです。

ほとんどの場合、私はScrollViewとPage Turnerの部品を扱っていると思います。ノートカードのオブジェクトを作成する最良の方法は不明です。

UIViewのサブクラスを作成してから、プログラムでノートカードインスタンスを作成するか、UIView用のXIBファイルを作成してクラスからビューにIBOutletを作成する方法はありますか?後者が可能なら、私はそれをやりたいのですが、UIViewControllerではなく、UIViewオブジェクトからアウトレットを受け入れる方法を知りません。

カスタムUIViewの外では、私はまだコアデータベースからこれらのオブジェクトのクエリにアプローチする必要があるかどうかは不明です。決定を行うためにスクロール可能なオブジェクトがあるようにします。

私のUIScrollViewControllerクラスでは、viewDidLoadの下で、FetchRequestsで構成されたForループを使用する必要があるかどうかを教えてくれますか?そして、コアデータ属性を使用してUIView変数を設定します。なぜなら、それが正しいと思うかどうか、より良い選択肢があるかどうか分からないからです。

答えて

1

他のビューと同様に、カスタムXIBおよびUIViewController-descendantクラスを作成し、スクロールビューで再利用できます。これにより、サブビューを手動でレイアウトする手間が省け、表示する文字列を書式設定するロジックをカプセル化することができます。このアプローチを使用すると、カスタムノートカードビューはスタンドアロンであれば(スクロールビューのような)別のサブビューとして機能し、ユーザに一貫したインターフェースを提供します。

ビューのアウトレットを任意のオブジェクトに接続できます.UIViewController派生クラスでない場合は、XIBでプロキシオブジェクトとして参照できます。プロキシのクラスをカスタムクラスに設定し、コンセントを通常どおりに接続します。オプションの辞書のNSBundle loadNibNamed methodにカスタムクラス(XIBで定義したプロキシ)のインスタンスを渡す必要があるため、ビューを作成するときにちょっとしたことがあります。それは動作しますが、私は通常、上記のソリューションを使用します。これは、ビューが追加のコードなしで独立して正しく動作することを可能にするからです。

どちらのソリューションでも、私は、エンティティをパラメータとして取るビューのために指定された初期化子を持っているので、ビュー自体が設定できます。また、ビューがレンダリングされた後にエンティティを変更するために使用できるプロパティ

現在のSDK(< 5)では、どのサブビューも通常のビューライフサイクル(viewDidLoad、viewDidUnloadなど)には参加しません。 。プライマリビューコントローラ(push/popViewController、presentModalViewControllerを使って表示されたもの)だけが呼ばれるメソッドを持っているので、あなたのサブビューにライフサイクルメソッドの1つで実行されるコードがあれば、起こっていることをサブビューに通知する配管。 SDK 5はまだNDAの下にあるので、何が違うのかはわかりませんが、でアプリが5を待つことができれば、あなたの人生はずっと楽になると言います。5で何が新しくなったのか見てみると、私が何を指しているのか知ることができます。

データをロードする限り、アプリケーションが情報をどのようにロードするか、一度に表示されるレコード数などを知らなくても、最良の方法を推薦することは難しいです。一般に、できるだけ早く表示されるよりも多くのデータをロードしないでください。私のプロジェクトでは通常、I:

  • は、画面の2.5倍の大きさ(私のためによく働いた任意の値)
  • にフェッチ要求のバッチサイズを設定する「表示」ごとに単一の FetchRequest
  • を作成します。
  • I 常にを作成します。custom NSManagedObjects (shameless plug)を自分のエンティティ用に作成します。エンティティが多くのデータを持っている場合は、setReturnsObjectsAsFaultsを使用して、そのオブジェクトの遅延を調べるためにsetReturnsObjectsAsFaultsを試してみましょう。重いデータの読み込みがパフォーマンスを傷つけるよりもメモリを助ける
  • 各エンティティのカップルプロパティが必要な場合は、リストビューで必要なプロパティだけを持つ「ヘッダー」エンティティが存在するようにエンティティをリファクタリングします。すべてのデータを含む完全なエンティティ(詳細ビューの読み込みを容易にするためにヘッダー内で参照されます)
  • 各エンティティから1つのプロパティのみが必要な場合(たとえば、ユニークな日付のリストを取得する場合など) iを表示するためにオンになるndicatorをカレンダーで使用する場合は、propertiesToFetch combined with NSDictionaryResultsTypeを使用して、値の配列だけを返します。
+0

ありがとうございます。ご意見は非常に参考になりました。私はSDK5の新機能を紹介しました。あなたが話していることを見ていると思います。私は彼らがそれについてもっと話しているかどうかを見るためにビデオを見ようとしています。私のアプリが5まで待つことができるなら、私は言いました。私はそれができると思います。ちょうど私がちょうどサインアップし、今5を得るか待つべきであると思うかどうか興味があるだけ。私は私が尋ねると思ったので、5が出てくるときは分かりません。もう一度おねがいします:-) – NateHill

+0

また、SDK 5を予期して、私のアプリのどの部分を今作業しなければなりませんか?私はアプリのほとんどを作成することを嫌い、変更は私が何をしたか無効にするため。しかし私はまた、私が周りに座っているだけでなく、可能な限り機能するようにしたいと思います。 – NateHill

+0

5の最新ベータ版はかなり安定しています。私のすべてのデバイスでそれを実行しています、そして、それは素晴らしい実行しているいくつかの小さな不具合を除いて。あなたのアプリについてもっと知ることなく、私はどれくらいの助けが得られるか分かりませんが、試してみます。ほとんどの描画関連APIは変更されませんが、コアデータエンティティは同じです(APIではなく)。 View Controllerの階層は本当に変わります。 – RyanR

関連する問題