1

背景画像をロードするときに、searchResultsTableView セルを完全に表示することができません。セルは非常に弱々しく見え、選択した場合でも背景のイメージ ビューから目立ちません。助言がありますか?

- (void)searchDisplayController:(UISearchDisplayController *)controller willShowSearchResultsTableView:(UITableView *)tableView {

    for (UIView *view in controller.searchResultsTableView.subviews) {
        //if ([view isKindOfClass:[UIImageView class]]) {
            [view removeFromSuperview];
        //}
    }

    UIImage *patternImage = [UIImage imageNamed:@"background_newer.png"];
    UIImageView * backgroundImageView = [[UIImageView alloc] initWithImage:patternImage];
    //backgroundImageView.opaque = NO;
    backgroundImageView.alpha = 0.9;

    controller.searchResultsTableView.separatorStyle = UITableViewCellSeparatorStyleNone;
    controller.searchResultsTableView.backgroundColor = [UIColor clearColor];
    [controller.searchResultsTableView addSubview:backgroundImageView];
    [controller.searchResultsTableView sendSubviewToBack:backgroundImageView];
    controller.searchResultsTableView.rowHeight = 25;

    [patternImage release];
    [backgroundImageView release];  
}

このデリゲート メソッド内で (searchResultsTableView で) 使用するために新しい UITableViewCell を割り当てる以外に、私は何もしていません。

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

訂正ありがとうございます!

(私はiPhoneシミュレーター3.1.2を使用しています)

4

3 に答える 3

1

@Jessedc

アドバイスありがとうございます。まだコードを試していません。

searchResultsTableViewがロードされるたびにsearchResultsTableViewの背後にあるメインテーブルビューでhidden=YESを設定し、検索が終了するとhidden = NOを設定することで、この頭痛の種を解決しました(返信を見る前)。メインのテーブルビューは、imageviewの上にbackgroundColor = [UIColor clearColor]で設定されます(元のsearchResultsTableViewコードと同じ画像が読み込まれます)。

この新しいレイアウトは以前の希望どおりです:-)。

于 2010-02-07T07:29:55.063 に答える
1

表のテキストが上にスクロールする静的な背景画像を表示しようとしていますか? コードが少し混乱している可能性があると思います(おそらく)。

テーブルのカスタマイズは通常、viewWillAppear メソッドで行います。したがって、このコードはそこに行く必要があります:

UIImage *patternImage = [UIImage imageNamed:@"background_newer.png"];
UIImageView * backgroundImageView = [[UIImageView alloc] initWithImage:patternImage];
//backgroundImageView.opaque = NO;
backgroundImageView.alpha = 0.9;

controller.searchResultsTableView.separatorStyle = UITableViewCellSeparatorStyleNone;
controller.searchResultsTableView.backgroundColor = [UIColor clearColor];
[controller.searchResultsTableView addSubview:backgroundImageView];
[controller.searchResultsTableView sendSubviewToBack:backgroundImageView];
controller.searchResultsTableView.rowHeight = 25;

[patternImage release];
[backgroundImageView release]; 

次に、デリゲート メソッドsearchDisplayController:willShowSearchResultsTableViewで、渡された tableview オブジェクトを参照していませんが、トップ レベルから呼び出しています (おそらく不要でしょうか?)。

テーブル設定コードを viewWillAppear に移動してみてください。これが役立つかどうか、または詳細情報/コードを提供できるかどうかをお知らせください。

于 2010-02-08T15:22:19.280 に答える
0

テーブルビューの背景を難しい方法で設定しているように私には思えます。100%問題かどうかはわかりませんが、UITableViewの背景を次のように設定する必要があります。

controller.searchResultsTableView.backgroundColor = [[[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"background_newer.png"]]autorelease];

于 2010-02-07T06:01:00.930 に答える