我有一个包含 UITableView 和 UIDatePicker 的 UI。当我在我的表上选择一行时,它会突出显示,但只要我与 DatePicker 交互(滚动到一个新值),该行就不再突出显示。行的值绑定(bind)到 DatePicker 的值。如何永久突出显示单元格?
在 iCal-App -> Add -> Start&End 中,我看到了这种行为。 我在选择器的 ValueChanged 方法中尝试了 selectRowAtIndex 方法。我认为突出显示在此回调方法中丢失了。
-(IBAction)setStartTimeMethod
{
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"EEE, dd. MMM yyyy HH:mm"];
if(!self.endDateRowSelected)
self.date = [dateFormat stringFromDate:[datePicker date]];
else
self.endDate = [dateFormat stringFromDate:[datePicker date]];
[dateFormat release];
// [self.tableView1 selectRowAtIndexPath:tableView1.indexPathForSelectedRow animated:NO scrollPosition:UITableViewScrollPositionTop];
[self.tableView1 reloadData];
}
编辑,我的didSelectRowMethod
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"EEE, dd. MMM yyyy HH:mm"];
if(indexPath.row == 0){
NSLog(@"Start");
self.endDateRowSelected = NO;
NSDate *startDate = [formatter dateFromString:self.date];
[datePicker setDate:startDate animated:YES];
//if(self.endDateRowSelected)
// [tableView selectRowAtIndexPath:indexPath animated:YES scrollPosition:UITableViewScrollPositionNone];
}else if(indexPath.row == 2){
NSLog(@"End");
self.endDateRowSelected = YES;
if(self.endDate){
NSDate *endDateTime = [formatter dateFromString:self.endDate];
[datePicker setDate:endDateTime animated:YES];
}
}else{
self.endDateRowSelected = NO;
}
[formatter release];
// Won't work, doesn't allow highlighting a cell.
// [tableView deselectRowAtIndexPath:indexPath animated:NO];
}
BR, 迈贝克
最佳答案
在 TableView 的didSelectRowAtIndexPath委托(delegate)方法的最后使用这段代码,
[tableView deselectRowAtIndexPath:indexPath animated:NO];
关于objective-c - 在 pickerview 事件中突出显示 UITableViewCell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8293642/