将touchupinside添加到以编程方式创建的按钮,并将NSDate提交到文本字段

时间:2013-03-07 01:55:28

标签: ios objective-c xcode

我遇到的问题是,我不确定如何将touchupinside添加到保存日期按钮的下面的代码中。我只是尝试启动UIDatePicker并将日期提交到文本字段中,然后将其关闭。

所以我不知道如何将这个以编程方式创建的按钮链接到datePicker方法。不仅如此,我之前没有使用UIDatePicker,所以将它读入文本字段我有点模糊。文本字段是dateFieldText。

用户点击保存日期后,应取消UIDatePicker。

感谢您的帮助。这个问题对我来说有点复杂。

      - (void)textFieldDidBeginEditing:(UITextField *)sender
        {
            sender.delegate = self;
                if([sender isEqual:dateFieldText])
                {
                    UIBarButtonItem *doneButton = [[UIBarButtonItem alloc]
                                               initWithTitle:@"Save Date"
                                               style:UIBarButtonItemStyleDone
                                               target:self
                                               action:@selector(datePicker)];

                self.navigationItem.rightBarButtonItem = doneButton;

            }
            else{
                UIBarButtonItem *submitButton = [[UIBarButtonItem alloc]
                                               initWithTitle:@"Done"
                                               style:UIBarButtonItemStyleDone
                                               target:self
                                               action:@selector(datePicker)];
                self.navigationItem.rightBarButtonItem = submitButton;

            }  
        }


    -(IBAction)datePicker
    {
        UIDatePicker *datePicker = [[UIDatePicker alloc] init];
        datePicker.datePickerMode = UIDatePickerModeDateAndTime;
        [datePicker addTarget:self action:@selector(saveDate)  forControlEvents:UIControlEventValueChanged];
        [self.dateFieldText setInputView:datePicker];
    }

    // I haven't made the saveDate method yet...

1 个答案:

答案 0 :(得分:1)

你有一些错误连接的东西。您需要在创建文本字段的位置将日期选择器设置为文本字段的inputView,而不是在用户点击未添加的按钮之后,直到用户将焦点放在文本字段上。

您也不需要“完成”按钮和“保存日期”按钮。要么有一个完成按钮,要么有一个保存和取消按钮。

您还需要实施textFieldDidEndEditing委托方法来删除您添加的所有按钮。

您的saveDate方法需要使用当前选定的日期更新文本字段的文本(将日期转换为带有NSDateFormatter的字符串后)。

完成/保存/取消按钮的操作(无论你最终做什么)只需要在文本字段上调用resignFirstResponder。这将取消日期选择器。按钮操作可能还需要根据需要保存或恢复日期值。