0

みんな!tableView のリロードに問題があります。RadioTableというクラスを使用して、tableView をサブクラス化しています。TableViewCells もサブクラス化していますが、ここでは重要ではありません。

私はかなり新しく、いくつかのチュートリアルやものからサブクラスを構築したことを指摘する必要があります。

まず、データをリロードしようとしたときに表示されるエラー メッセージを次に示します。[self.tableView reloadData]でリロードしています。

*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '-[UITableViewController loadView] loaded the "MainView" nib but didn't get a UITableView.'

さて、問題はかなり明確です。ビュー(私のnibファイル)には、ファイル所有者に接続されたtableViewがありません。そして、それが私が解決しようとしたものです。サブクラスに IBOutlet を追加し、そこに tableView-property を設定しようとしました。

(私のtableView-subclassはUITableViewから継承されているので、明確です)

ここに私の初期コードがあります:

- (id)initWithStyle:(UITableViewStyle)style {

 if ((self = [super initWithStyle:style])){
  RadioTable *aTableView = [[RadioTable alloc] initWithFrame:self.tableView.frame style:style];
  [aTableView setDelegate:self];
  [aTableView setDataSource:self];
  [aTableView setSwipeDelegate:self];
  [aTableView setRowHeight:54];

     [self setTableView:aTableView];
        [self.tableView setScrollEnabled:NO];
        [self.tableView setRowHeight:80];
        [self.tableView setSeparatorStyle:UITableViewCellSeparatorStyleSingleLine];
        [self.tableView setSeparatorColor:[UIColor lightGrayColor]];
  [aTableView release];

 }

 return self;
}

アプリを起動するとtableViewは正常に動作し、完璧に動作します。しかし、リロードしようとすると問題が発生します。

4

1 に答える 1

2

これで問題が解決するかどうかはわかりませんが、init メソッドでビュー コントローラーのビューを作成しないでください。loadView代わりに、そのメソッドでテーブル ビューをオーバーライドして作成します。そして、tableViewプロパティだけでなくView Controllerのviewプロパティにもテーブルを割り当てます。

loadViewおよび詳細については、ドキュメントを参照してviewDidLoadください。

于 2010-09-29T21:26:51.023 に答える