我使用Apple的代碼示例來顯示一個UIDatePicker,當一個特定的UITableViewCell被選中。UIDatePicker不會顯示後,UITableViewCell選擇
我該如何改變這種行爲?
我的代碼:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
[tableView deselectRowAtIndexPath:indexPath animated:YES];
if(indexPath.section == 5) {
//Date Picker
UITableViewCell *targetCell = [tableView cellForRowAtIndexPath:indexPath];
self.pickerView.date = [self.dateFormatter dateFromString:targetCell.textLabel.text];
if (self.pickerView.superview == nil)
{
[self.view.window addSubview: self.pickerView];
// size up the picker view to our screen and compute the start/end frame origin for our slide up animation
//
// compute the start frame
CGRect screenRect = [[UIScreen mainScreen] applicationFrame];
CGSize pickerSize = [self.pickerView sizeThatFits:CGSizeZero];
CGRect startRect = CGRectMake(0.0,
screenRect.origin.y + screenRect.size.height,
pickerSize.width, pickerSize.height);
self.pickerView.frame = startRect;
// compute the end frame
CGRect pickerRect = CGRectMake(0.0,
screenRect.origin.y + screenRect.size.height - pickerSize.height,
pickerSize.width,
pickerSize.height);
// start the slide up animation
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.3];
// we need to perform some post operations after the animation is complete
[UIView setAnimationDelegate:self];
self.pickerView.frame = pickerRect;
// shrink the table vertical size to make room for the date picker
CGRect newFrame = self.tableView.frame;
newFrame.size.height -= self.pickerView.frame.size.height;
self.tableView.frame = newFrame;
[UIView commitAnimations];
}
}
}
爲什麼使用這一行 [tableView deselectRowAtIndexPath:indexPath animated:YES]; – Scar
因爲我的其他單元格是TextFields,我不想讓單元格始終突出顯示。但是這條線沒有任何區別。 – jussi
要禁用單元格上的突出顯示,您必須使用此分類 ''cell setSelectionStyle:UITableViewCellSelectionStyleNone];' 並確保您選擇第5部分 – Scar