7

UIDatePickerUITableViewCell から表示するにはどうすればよいdatepickerですか? 上部にツールバーを表示して、辞任することができますか? これを行う方法に関する良いチュートリアルはありますか?

4

3 に答える 3

4

私は最近、まったく同じことをしなければなりませんでした。

  1. に を挿入UITextFieldしますUITableViewCell(カスタムを作成する必要がある場合があります)。これは、カスタムセルのすべての動的セルに表示するか、単一の静的セルUITableViewCellに表示するかによって異なります)。UITableView
  2. a UIDatePicker、 a UIToolbar、および aUITextFieldのプロパティを作成し、IB でそのUITextFieldプロパティをUITextFieldステップ 1 で作成したものに接続します (カスタムUITableViewCellクラスを使用している場合は、そこにUITextFieldプロパティを配置する必要があります)。

    @property (strong, nonatomic) UIDatePicker * datePicker;
    @property (strong, nonatomic) UIToolbar * datePickerToolbar;
    @property (strong, nonatomic) IBOutlet UITextField *textField;
    
    ...
    
    @synthesize datePicker, datePickerToolbar, textField;
    
  3. UIDatePickerUIToolbar、および をセットアップしますUITextField

    - (void)viewDidLoad {
        // Initialise UIDatePicker
        datePicker = [[UIDatePicker alloc] init];
        datePicker.datePickerMode = UIDatePickerModeTime;
        [datePicker addTarget:self action:@selector(datePickerValueChanged:) forControlEvents:UIControlEventValueChanged]; // method to respond to changes in the picker value
    
        // Setup UIToolbar for UIDatePicker
        datePickerToolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, self.view.bounds.size.width, 44)];
        [datePickerToolbar setBarStyle:UIBarStyleBlackTranslucent];    
        UIBarButtonItem *extraSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
        UIBarButtonItem *doneButton = [[UIBarButtonItem alloc] initWithTitle:@"Done" style:UIBarButtonItemStyleDone target:self action:@selector(dismissPicker:)]; // method to dismiss the picker when the "Done" button is pressed    
        [datePickerToolbar setItems:[[NSArray alloc] initWithObjects: extraSpace, doneButton, nil]];
    
    
        // Note: If you're using dynamic cells, the below 2 lines need to be in your cellForRowAtIndexPath method instead.
    
        // Set UITextfield's inputView as UIDatePicker    
        textField.inputView = datePicker;
        // Set UITextfield's inputAccessoryView as UIToolbar
        textField.inputAccessoryView = datePickerToolbar;
    }
    
  4. 設定dismissPicker方法:

    -(void)dismissPicker:(id)sender{
        [textField resignFirstResponder];
    }
    
  5. 設定datePickerValueChanged方法:

    - (void)datePickerValueChanged:(id)sender{
        NSDate *selectedDate = datePicker.date;
    
        NSDateFormatter *df = [[NSDateFormatter alloc] init];
        [df setDateFormat:@"HH:mm"]; 
    
        [textField setText:[df stringFromDate:selectedDate]];
    }
    

注: 私のコードでは、時刻を表示するためのインターフェイスが必要だったため、ここで日付形式を設定しました ( HH:mm)。UIDatePickerこのため、 の初期化コードでviewDidLoad、モードを に設定していることにも気付くでしょうUIDatePickerModeTime。日付を選択する場合は、 に設定することをお勧めしますUIDatePickerModeDate

于 2013-07-21T20:02:30.403 に答える