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];  
}

除了在这个委托方法中分配一个新的 UITableViewCell 以供使用(在 searchResultsTableView 中)之外,我没有做任何其他事情:

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

感谢您的任何更正!

(我在 iPhone 模拟器 3.1.2 上)

4

3 回答 3

1

@Jessedc

谢谢你的建议。还没试过你的代码。

我通过在 searchResultsTableView 加载时在 searchResultsTableView 后面的主 tableview 上设置 hidden=YES 和在搜索结束时设置 hidden=NO 来解决这个头痛问题(在我看到你的回复之前)。主 tableview 在 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 回答