我想在UITableView
方法-didSelectRowAtIndexPath
上显示选择器视图。这是一个样本设计(我需要自定义选择器,它显示食物名称而不是日期和时间)。 NumberOfRowsInSection大于10.当选择单元格时,将显示选择器视图并从选择器视图中选择值。我怎样才能做到这一点?
答案 0 :(得分:0)
在TableViewController中实现UIPickerViewDataSource& UIPickerViewDelegate协议使用以下方法:
如果您想以更个性化的方式呈现数据,而不是“titleForRow”实现:
当用户在选择器工具中选择一行时进行事件处理:
重新设置在创建时将UIPickerView的委托设置为'self'(这将在TableView的单元格中,因此您有很多选项可以创建它,或者创建一个原型单元格内置UIPickerView的故事板或在'cellForRowAtIndexPath'中手动操作的故事板,并符合TableViewController的头文件中的那些协议。
要实现从TableView中的常规TableViewCell切换到具有交互式UIPickerView的单元格,您可能希望在TableViewController中使用“didSelectRowAtIndexPath”来刷新该单元格,您可以使用[self.tableView reloadData]或者使用动画使用:
例如,您可以将名为“editingPickerView”的BOOL变量初始设置为“NO”,并在“didSelectRowForIndexPath”方法中设置:
if(indexPath.row == X) {
self.editingPickerView = !self.editingPickerView;
[self.tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation: UITableViewRowAnimationFade];
}
我使用故事板,所以我会有一个原型单元格显示正常数据(没有UIPickerView),当选择显示不同的原型单元格时。 同时,在'cellForRowAtIndexPath'中,你需要有一种不同的方式来提供相同的行,具体取决于'editingPickerView'变量,有点像这样:
if(editingPickerView) {
//reuse the cell with the identifier 'UIPickerView_cell'
UIPickerView *picker = (UIPickerView*) [cell viewWithTag:69];
picker.delegate = self;
} else {
//reuse the normal cell with the identifier 'normal_cell' and show data
}
如果要在用户在pickerView中选择UIPickerView中的行时更改为普通单元格:didSelectRow:inComponent:您应该执行以下操作:
self.editingPickerView = !self.editingPickerView;
//you should probably know 'a priori' what index path your picker would be in
[self.tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation: UITableViewRowAnimationFade];
答案 1 :(得分:0)
在视图中添加隐藏的文本字段。然后在viewDidload中:
self.dtmPicker = [[UIDatePicker alloc] init];
self.dtmPicker.datePickerMode = UIDatePickerModeDate;
[self.dtmPicker addTarget:self action:@selector(DateChanged:) forControlEvents:UIControlEventValueChanged];
self.lblDate.inputView = self.dtmPicker;
我正在使用它。这很容易:)
答案 2 :(得分:0)
这可能会有所帮助。只需将UIDatePicker替换为UIPicker控件&添加适当的委托方法。网址:http://masteringios.com/blog/2013/10/31/ios-7-in-line-uidatepicker/3/
我认为这就是你想要的。只需删除“UIColor + Custom.h”,“UIColor + Custom.m”&它引用了错误。