2010-11-18 6 views
1

これは数時間前からこの問題の解決策を探していましたが、Interface BuilderでUITableViewCellを構築する方法を見つけることができません。アクションを親UINavigationControllerに渡してから、そのセルを使用して2つの独立したUITableViewのインスタンス間で情報を表示します。研究の数時間後、私のような私のファイルを構造化している:Interface Builderで作成されていないUIViewController内のUITableView内でUITableViewCell Nibを使用する

  1. のUIViewControllerを、それがプロジェクト全体のための私の基本図です。スタック上にUserInfoControllerをプッシュするIBActionを含みます。

  2. UI Builderで作成されたUITableViewCellには、新しいUIViewControllerを押す必要があるボタンが含まれており、スタックの上にUserInfoControllerを呼び出します。 File's Ownerは上記のUIViewControllerです。

  3. 上記のUIViewControllerで使用するUIViewは、Interface Builderで作成されました。このUIViewには、データのある最上位のUIViewセクションと、UITableViewCellを表示する最下位のUITableViewが含まれています。このUIViewに表示されているUITableViewCellのボタンを押すと、親UIViewController内のアクションがアクティブになるようにしたいと思います。

私はここで大きなものを見逃しているように感じます。私はまた、UITableViewCellを使用して最初のUIViewControllerのアクションを実行する必要があるUIViewとUITableViewを持つ別のUIViewControllerを最終的に作成したいと思います。しかし、私は私の意見の一つにもこれを働かせることができないので、私は上記の問題を解決するまで待つでしょう。

EDIT: 私の直感は、これがアウトレットの問題であると私に伝えています。現在、私のUIViewControllerは、UITableViewを含むUIViewのFile's Ownerとして機能しています。 UIViewには、UITableViewDelegateとUITableViewDataSourceのコードも含まれています。私のUITableViewCellを使用して関連情報を表示します。 UITableViewCellは独自のNibですが、File's OwnerもUIViewControllerです。しかし、UITableViewCellのボタンを押すと、そこにアウトレットがないのにUIViewにイベントが登録されます。私がUITableViewCellを独自のNibにしたい理由は、他のUIViewControllerビューを後で再利用したいからです。

私はUITableViewCellをうまく見ることができますが、正しく動作するようにはできません。 UITableViewCell内のボタンのアクションを、UITableViewデリゲートとDataSourceを含むファイルではなく、それを含むUIViewControllerにリンクするにはどうすればいいですか?

ホープこれは経験則としてもう少し明確:-D

+0

あなたの質問が完全にはっきりしていません。カスタムセルを使用するためにUITableViewCellを取得することはできませんか?それとも、アクションは機能しませんか?または、アクションは機能しませんが、セルは更新されません。または、2つのインスタンスがある場合は動作しますが、動作しません。または、テーブルがカスタムセルを使用しないため、アクションが機能しないため、セルが更新されず、別のテーブルインスタンスを追加しても役立たない。一度に一つのことに取り組む。カスタムセルを稼働させると、ペン先からセルを使用するのは比較的簡単です。その後、アクションチェーンに取り組む。 – hooleyhoop

+0

あなたの質問は何ですか?何を試しましたか?何がうまい?何がないのですか? –

+0

さて、今、階層は次のようになります:UIViewController-> UIView-> UITableView-> UITableVIewCell。 UITableViewCellのファイル所有者をUIViewControllerにしましたが、カスタムセルのボタンを押すと、UIViewControllerではなく、アクションを実行するためにUIViewが呼び出されます。私がこれが起こっていると思う理由の1つは、プロパティのいずれかを編集するために、UITableCellViewのコンセントをUITableViewの親UIViewにリンクする必要があるためです。このコンセントを取り除き、代わりにUIViewControllerに配置すると、UIViewは私のUITableViewCellを見つけることができません –

答えて

-1

です:しないでください。ペン先からロードするのは、単にメモリ内にテーブルビューセルを作成するよりもはるかに遅いです。 (正直なところ、ほとんどのもののペン先は、実際にiOS開発を始めると価値があるよりも面倒です)。

しかし、私はそれがこれを行う場所の周りにいくつかのコードが横たわっていると言いました。

- (UITableViewCell *)loadCellFromNib:(NSString *)nibName 
{ 
    NSArray *nib = [[NSBundle mainBundle] loadNibNamed:nibName 
               owner:self options:nil]; 
    UITableViewCell * cell = nil; 
    for(NSObject *obj in nib) 
    { 
     if([obj isKindOfClass:[UITableViewCell class]]) 
     { 
      cell = (UITableViewCell*)obj; 
      break; 
     } 
    } 
    return cell; 
} 

また、私はあなた自身のUITableViewCellサブクラスを使ってテーブルセルを作成すると言います。

+1

私は、「ほとんどのもののペン先は、彼らが価値あるものよりもトラブルが多い」ことに同意しません。ビューが複雑な場合は、コードよりもInterface Builderで作成/可視化するほうがずっと簡単です(特にメンテナンスの容易さやチーム環境の場合)。また、パフォーマンスヒットは、通常、本当の懸念ではありません:http://cocoawithlove.com/2010/03/load-from-nib-or-construct-views-in.html –

+1

人々は、しばしば、ペン先からのローディングは "ずっと遅いですが、Matt Gallagherは実際にそれを測定し、ほとんどの場合、それが心配する価値があるだけの十分な差をつくらないと結論づけました。彼はまた特定の状況では、ペン先からのローディングがより速くなることを発見した:http://cocoawithlove.com/2010/03/load-from-nib-or-construct-views-in.html – NickFitz

+0

デイヴィッドは、私の目標を間違って設定しています。これは確かです。私はインターフェイスのためにNibファイルを使用することに分割されます。 UITableViewのような小さなレイアウトは、プログラムでクラスを作成する方が良いでしょうが、より複雑なレイアウトでは、Nibsを使用することにいくつかの利点があります。 –

関連する問題