我有一个UITableViewCell,其中填充了从PHP页面中提取的数组。基于屏幕方向,单元格可以足够宽以适合两个图像而不是仅一个。所以我检测到屏幕方向,然后添加两个图像视图(一个占据屏幕左半部分,包含所有奇数索引号,一个占据屏幕右半部分,包括所有甚至指数数字)。如果我有奇数个图像,那么最后一个图像会留空。
问题在于,当我有奇数个图像时,我点击最后一个单元格(将容纳两个单元格,但只保留一个单元格),它会将背景颜色更改为白色/非常浅灰色。如何更改此选项以便单击单元格不会更改背景颜色?
请注意以下代码只是一个代码段。我省略了屏幕宽度检测和方向,以保持一切相关。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString *cellIndentifier = @"BasicCell";
UITableViewCell *myCell = [tableView dequeueReusableCellWithIdentifier:cellIndentifier];
myCell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIndentifier];
CGRect result = [UIScreen mainScreen].bounds;
CGFloat width = CGRectGetWidth(result);
CGFloat height = CGRectGetHeight(result);
UIInterfaceOrientation interfaceOrientation = [UIApplication sharedApplication].statusBarOrientation;
if(UIInterfaceOrientationIsPortrait(interfaceOrientation)){
result.size = CGSizeMake(width, height);
} else if(UIInterfaceOrientationIsLandscape(interfaceOrientation)) {
result.size = CGSizeMake(height, width);
}
UIImageView *myImageView;
UIImageView *myImageView2;
myCell.contentView.backgroundColor = [ UIColor colorWithRed:0/255.0f green: 17/255.0f blue:34/255.0f alpha:1];
if(result.size.width <= 480) {
Companies *item = _feedItems[indexPath.row];
myImageView = [[UIImageView alloc] initWithFrame:CGRectMake(0,0,CGRectGetWidth(self.listTableView.bounds), (item.imageName.size.height / item.imageName.size.width) * CGRectGetWidth(self.listTableView.bounds))];
myImageView.tag = indexPath.row;
myImageView.image = item.imageName;
myImageView.userInteractionEnabled = YES;
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(onImageTap:)];
[tap setNumberOfTouchesRequired:1];
[tap setNumberOfTapsRequired:1];
//[tap setDelegate:self];
[myImageView addGestureRecognizer:tap];
[myCell addSubview:myImageView];
}
if(result.size.width > 480) {
NSLog(@"IndexPath.row: %d, feedItems: %d",indexPath.row, _feedItems.count);
if((indexPath.row*2+1) <= _feedItems.count) {
Companies *item = _feedItems[indexPath.row * 2];
myImageView = [[UIImageView alloc] initWithFrame:CGRectMake(0,0,CGRectGetWidth(self.listTableView.bounds) / 2, (item.imageName.size.height / item.imageName.size.width) / 2 * CGRectGetWidth(self.listTableView.bounds))];
myImageView.tag = indexPath.row*2;
myImageView.image = item.imageName;
myImageView.userInteractionEnabled = YES;
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(onImageTap:)];
[tap setNumberOfTouchesRequired:1];
[tap setNumberOfTapsRequired:1];
[myImageView addGestureRecognizer:tap];
[myCell addSubview:myImageView];
if ((indexPath.row*2+1) < _feedItems.count) {
Companies *item2 = _feedItems[(indexPath.row * 2) + 1];
myImageView2 = [[UIImageView alloc] initWithFrame:CGRectMake(CGRectGetWidth(self.listTableView.bounds) / 2,0,CGRectGetWidth(self.listTableView.bounds) / 2, (item.imageName.size.height / item.imageName.size.width) / 2 * CGRectGetWidth(self.listTableView.bounds))];
myImageView2.tag = indexPath.row*2+1;
myImageView2.image = item2.imageName;
myImageView2.userInteractionEnabled = YES;
UITapGestureRecognizer *tap2 = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(onImageTap:)];
[tap2 setNumberOfTouchesRequired:1];
[tap2 setNumberOfTapsRequired:1];
[myImageView2 addGestureRecognizer:tap2];
[myCell addSubview:myImageView2];
} else {
//myCell.contentView.backgroundColor = [ UIColor colorWithRed:0/255.0f green: 17/255.0f blue:34/255.0f alpha:1];
}
}
}
return myCell;
}
仅当第二个图像不存在且用户点击该空白区域时才会发生这种情况。有谁知道我错过了什么,或是什么导致该领域回到白色?在Attributes Inspector中,我将Selection设置为None,希望能做什么。
答案 0 :(得分:2)
在tableview委托方法cellforrowatindexpath中试试这个
cell.selectionStyle = UITableViewCellSelectionStyleNone;