3

プロジェクトに検索バーを追加しましたが、非常にうまく機能します。(テーブル ビューの) オブジェクトを検索でき、リレーションも機能します。しかし、検索表示には結果名が表示されません。

例: "x" で始まるオブジェクトがありません >>> 結果がありません (正解です):

しかし、1 つのオブジェクトは "b" で始まりますが、名前をクリックしても表示されず、次のビュー (関係) が正しく表示されます。

たぶん、これは私のコードが原因です:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
static NSString *simpleTableIdentifier = @"CarCell";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];

if (cell == nil) {
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier];
}

if (tableView == self.searchDisplayController.searchResultsTableView) {

    Car *search = [searchResults objectAtIndex:indexPath.row];
    UILabel *carNameLabel = (UILabel *)[cell viewWithTag:101];
    carNameLabel.text = search.name;

これが機能しない理由がわかりません。これは私にとって非常に奇妙に思えます。誰かが私を助けることができれば素晴らしいことです。

更新:完全な方法

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
static NSString *simpleTableIdentifier = @"CarCell";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];

if (cell == nil) {
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier];
}

if (tableView == self.searchDisplayController.searchResultsTableView) {

     Car *search = [searchResults objectAtIndex:indexPath.row];
    UILabel *carNameLabel = (UILabel *)[cell viewWithTag:101];
    carNameLabel.text = search.name;

} else {
    Car *car = [cars objectAtIndex:indexPath.row];
    UIImageView *carImageView = (UIImageView *)[cell viewWithTag:100];
    carImageView.image = [UIImage imageNamed:car.thumbnail];

    UILabel *carNameLabel = (UILabel *)[cell viewWithTag:101];
    carNameLabel.text = car.name;

    UILabel *carSpeedLabel = (UILabel *)[cell viewWithTag:102];
    carSpeedLabel.text = car.carSpeed;

}

return cell;

}

4

2 に答える 2

0

更新されたコードがメソッド全体である場合、 、、およびビューをセルにtableView:cellForRowAtIndexPath:追加していません。carImageViewcarNameLabelcarSpeedLabel

新しいセルを初期化するときに、適切なタグを含めて、これらのサブビューを追加して構成する必要があります。ビューを追加してから、それらを取得するためにcell.contentView使用する必要があります。[cell.contentView viewWithTag:X]

于 2013-04-06T22:20:40.877 に答える
0

UILabel値で設定している sを取得しようとしてtagいますが、在庫を使用していますUITableViewCell。次のことを試してください。

if (tableView == self.searchDisplayController.searchResultsTableView) {
    Car *search = [searchResults objectAtIndex:indexPath.row];
    cell.textLabel.text = search.name;
} else {
    Car *car = [cars objectAtIndex:indexPath.row];
    cell.imageView.image = [UIImage imageNamed:car.thumbnail];

    cell.textLabel.text = car.name;
    cell.detailTextLabel.text = car.carSpeed;
}

UIView通常の に組み込まれている標準の を使用したくない場合は、新しいセルを作成するブロックにUITableViewCellカスタム ビューを作成して追加する (およびそのプロパティを設定する) 必要があります。tag

于 2013-04-06T22:22:24.463 に答える