转换Apple DateCell示例以使用UIPickerView而不是UIDatePickerView

时间:2013-11-26 22:04:06

标签: ios iphone objective-c ios7

我正在将Apple DateCell应用转换为使用UIPickerView而不是UIDatePicker。我已经退出并用故事板和整个代码中的UIPickerView替换了对UIDatePicker的引用。对DatePicker的引用仍有一些清理但是,我需要将引用转换为来自UIDatePicker的“ValueChanged”事件的“dateAction”方法,并且没有“发送事件”的内容所以UIPickerView。有没有人对我如何向我的UIPickerView添加或模拟这个“ValueChanged”事件有任何建议?此外,任何有关将其余程序转换为使用UIPickerView的建议都将非常感激。

- (IBAction)dateAction:(id)sender
{
NSIndexPath *targetedCellIndexPath = nil;

if ([self hasInlineDatePicker])
{
    // inline date picker: update the cell's date "above" the date picker cell
    //
    targetedCellIndexPath = [NSIndexPath indexPathForRow:self.datePickerIndexPath.row - 1 inSection:0];
}
else
{
    // external date picker: update the current "selected" cell's date
    targetedCellIndexPath = [self.tableView indexPathForSelectedRow];
}

UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:targetedCellIndexPath];
UIPickerView *targetedDatePicker = sender;

// update our data model
NSMutableDictionary *itemData = self.dataArray[targetedCellIndexPath.row];
[itemData setValue:targetedDatePicker.date forKey:kDateKey];

// update the cell's date string
cell.detailTextLabel.text = [self.dateFormatter stringFromDate:targetedDatePicker.date];

}

1 个答案:

答案 0 :(得分:2)

UIPicker适用于delegate,而不是ValueChanged处理程序。使控制器成为选择器的代表并实现

– pickerView:didSelectRow:inComponent:

不要忘记在控制器类声明中添加<UIPickerViewDelegate>