【发布时间】:2014-01-02 14:54:00
【问题描述】:
我有一个自定义 UITableViewCell 和一个 UIImage 和一个 UILabel(见下面的截图)。
如果我点击UITableViewCell,我会在上面添加一个复选标记,但是当复选标记可见时,UIImage 会向左移动(参见下面的屏幕截图)。
自动布局已关闭,内容模式设置为UIViewContentModeRight(通过情节提要)。
我的代码:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
MarkerCell *cell = (MarkerCell *)[tableView dequeueReusableCellWithIdentifier:@"marker"];
markerCategories = [[NSMutableArray alloc] init];
for (Marker *marker in self.allMarkers) {
BOOL isEqual = NO;
for (NSString *string in markerCategories) {
if ([marker.identifier isEqualToString:string]) {
isEqual = YES;
}
}
if (isEqual == NO) {
[markerCategories addObject:marker.identifier];
}
}
cell.backgroundColor = [UIColor clearColor];
cell.opaque = NO;
cell.backgroundView = nil;
cell.lbMarkerName.text = markerCategories[indexPath.row];
cell.ivIcon.image = [UIImage imageNamed:[markerCategories[indexPath.row] lowercaseString]];
if ([markerCategories[indexPath.row] isEqualToString:@"Löschteich"]) cell.ivIcon.image = [UIImage imageNamed:@"loeschteich"];
if (!cell.ivIcon.image) cell.ivIcon.image = [UIImage imageNamed:@"sonstige"];
return cell;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
MarkerCell *cell = (MarkerCell *)[tableView cellForRowAtIndexPath:indexPath];
// handle Checkmark
if (cell.accessoryType == UITableViewCellAccessoryCheckmark) {
[cell setAccessoryType:UITableViewCellAccessoryNone];
// remove Marker(s)
for (Marker *marker in self.allMarkers) {
if ([markerCategories[indexPath.row] isEqualToString:marker.identifier]) {
[markersToShow removeObject:marker];
}
}
}
else
{
[cell setAccessoryType:UITableViewCellAccessoryCheckmark];
// add Marker(s)
for (Marker *marker in self.allMarkers) {
if ([markerCategories[indexPath.row] isEqualToString:marker.identifier]) {
[markersToShow addObject:marker];
}
}
}
[tableView deselectRowAtIndexPath:indexPath animated:YES];
[self printMarkers];
}
【问题讨论】:
标签: objective-c uitableview ios7 uiimage