0

私は Xcode iOS 開発に本当に慣れていません。

「オートコンプリート」を使用して検索を実装しています(ユーザーが挿入した文字ごとにサーバーにリクエストを非同期に送信し、この接続により、サーバーから要求されたデータを取得しています)。この部分はかなりうまく機能します:)

私の問題は、テーブルビューで検索結果を表すことです。私はたくさんグーグル検索しましたが、私に役立つ良い例を見つけることができませんでした。tableViewが初めて描画するときはすべて問題ありませんが、別のリクエストをフェッチすると:(2番目のキーが押されると、リクエストは新しいデータを返し、以前のデータなしでテーブルに描画したい)。

「不正なセレクターがインスタンス 0x に送信されました...」という例外でアプリケーションがクラッシュします。

取得したデータを NSArray *FetchedData; に格納しています。その後、私は変更しました:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:    (NSInteger)section
{
     return [FetchedData count];
}

そして他の機能で(ここで何かを変更する必要があると思いますが、何を知らないのですか)。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:    (NSIndexPath *)indexPath
{


cell.cellName.text = (NSString*)[FetchedData objectAtIndex:indexPath.row];
return cell;
}

FetchedData を取得したら、次の関数を呼び出します。 [self.tableView reloadData];

しかし、上記の関数では、以前とは異なる次のフェッチされたデータを表現しようとした後にクラッシュしています (空の場合もあります)。

以前のセルをすべて削除する必要があると思いますが、その方法がわかりません。

基本的な説明でまともな例を教えてください。

ありがとう。

4

1 に答える 1

0

tableViewCell クラスをどこかに登録する必要があります (viewDidLoad)。

[self.tableView registerClass:[CustomTableViewCellClass class] forCellReuseIdentifier:@"CellResuseIdentifier"];

そして、

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:    (NSIndexPath   *)indexPath
{
CustomTableViewCellClass *cell = [self.tableView dequeueReusableCellWithIdentifier:@"CellReuseIdentifier"];

cell.cellName.text = (NSString*)[FetchedData objectAtIndex:indexPath.row];
return cell;
}

データを取得したら、呼び出します

[self.tableView reloadData];
于 2013-11-05T19:53:23.153 に答える