3

私は次のようにUIViewController内にUITableViewを持っています:

.h

@interface OutageListViewController : UIViewController<UITableViewDelegate,UITableViewDataSource> {
   IBOutlet UITableView *outageTable;

.m

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
   NSLog(@"Selected");
}

テーブルセルをカスタマイズしました:

//編集カスタマイズしたビューにUILabelを並べて表示し、背景を背景全体に広げます。しかし、カスタマイズしたセルに付けた背景画像とラベルのサイズを変更/削除した後も、「didSelectRowAtIndexPath」はまだ呼び出されていません。//編集を終了

@interface AbstractSummaryListViewCell : UITableViewCell {...}

@interface FiveColumnSummaryCell : AbstractSummaryListViewCell {...}

このUIViewは別のUIView内にあります。

@interface CustomTabBarController : UIViewController {
   OutageListViewController *outageListViewController;

そして私のAppDelegateはこれをウィンドウに追加します:

[window addSubview:[customTabBarController view]];

今、どのセルがクリックされ、didSelectRowAtIndexPathが呼び出されないかを判断しようとしています。データソースとデリゲートが、UITableViewからファイルの所有者に接続しています。実際、「cellForRowAtIndexPath」で指定されているように、データは正しく入力されます。これを修正しますか?

ありがとう!

4

4 に答える 4

4

私はそれを解決しました:カスタマイズされたセルxibでユーザーインタラクションが有効になっていることを確認するのを忘れました。なんてばかだ!

于 2011-08-02T16:44:14.120 に答える
3

UITableViewの次のプロパティはすべてYESですか?

  • permitSelection
  • permitSelectionDuringEditing

Edit:ポールは正しいと思います。デリゲートプロパティに問題があります。-(void)viewDidLoad内のtableViewのデリゲートプロパティを確認できます。あなたが言ったように、それらはxibのFileOwnerに接続されている必要があります。したがって、次のコードはnilを取得しません。

- (void)viewDidLoad {
   [super viewDidLoad];

   // They should not be nil.
   NSLog(@"delegate:%@ dataSource:%@", self.tableView.delegate, self.tableView.dataSource);
}
于 2011-08-02T02:03:53.017 に答える
2

ビューコントローラがどこのdelegateプロパティにも接続されていない可能性がありoutageTableます。

于 2011-08-02T02:58:32.220 に答える
0

簡単なテストを行うことができます...「big」ラベルを削除して、didSelectRowAtIndexPathが呼び出されるかどうかを確認します。

于 2011-08-02T00:13:01.567 に答える