0

私が遭遇している問題は、保存日付ボタンの以下のコードに 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...
4

1 に答える 1

1

間違って配線されているものがいくつかあります。ユーザーがテキスト フィールドにフォーカスを置くまで追加されないボタンをユーザーがタップした後ではなく、テキスト フィールドを作成する時点で、日付ピッカーをテキスト フィールドの inputView にする必要があります。

また、[完了] ボタンと [日付を保存] ボタンも必要ありません。単一の [完了] ボタンを使用するか、[保存] ボタンと [キャンセル] ボタンを使用します。

textFieldDidEndEditingまた、追加したボタンを削除するには、デリゲート メソッドを実装する必要があります。

メソッドsaveDateは、現在選択されている日付でテキスト フィールドのテキストを更新する必要があります (日付を を含む文字列に変換した後NSDateFormatter)。

[完了]、[保存]、[キャンセル] ボタンのアクション (最終的に何をするにしても)resignFirstResponderは、テキスト フィールドを呼び出すだけです。これにより、日付ピッカーが閉じられます。ボタン アクションでは、必要に応じて日付の値を保存または元に戻す必要がある場合もあります。

于 2013-03-07T02:19:58.910 に答える