「新聞」(モデル)インスタンスの詳細を表示する画面があります。画面のViewControllerには、この新聞モデルのプロパティが1つあります。NewspaperインスタンスにはいくつかのArticleインスタンスが含まれており、これらのArticleインスタンスは画面でUIButtonとして表す必要があります。UIButtonをタップすると、記事のタイトルを含むアラートメッセージが表示される必要があります。
UIButtonをArticleモデルに関連付ける良い方法は何ですか?基本的に、UIButtonをタップするときに、UIButtonの対応するArticleインスタンスを取得するにはどうすればよいですか?
私は現在、2つのアプローチを念頭に置いています。
- UIButtonをオーバーライドし、Articleインスタンスのプロパティを追加します。
- ビュー(UIButton)にはモデル(Article)との直接通信手段があるため、これはMVCモデルに違反しますが、UIButtonはそのプロパティを呼び出すだけで、どのArticleインスタンスを使用して、アクション(記事のタイトルを含むアラートメッセージを表示します)。
- UIButtonのNSArray(buttonsArray)とArticleインスタンスのNSArray(articlesArray)を作成します。
- buttonArrayのインデックス0は、articlesArrayのインデックス0に対応します。タップされたUIButtonに関連付けられたArticleインスタンスは、配列内のボタンの位置に基づきます。UIButtonの対応するArticleを取得するには、タップされたUIButtonが見つかるまでbuttonsArrayをループし、同じインデックスを使用してarticlesArrayからArticleを取得する必要があります。
これを達成するためのより良い方法はありますか?
編集:ボタンにはアニメーションとジェスチャー認識機能があります。また、Articleモデルのボタンアクションに必要な情報には、タイトルだけではありません(たとえば、記事の位置、または別の画面に渡される場合はオブジェクト自体など)。