2014-11-20 12 views
7

ho bisogno di aggiungere un pulsante "fatto" alla mia selezione data come in questa immagine:UIDatePicker con "fatto" pulsante

enter image description here

Questo è il mio codice:

-(IBAction)chooseDate:(id)sender{ 
self.datepicker= [[UIDatePicker alloc] initWithFrame:CGRectMake(0, 0, 320, 216)]; 
    self.datepicker.datePickerMode = UIDatePickerModeDate; 
    datepicker.backgroundColor = Rgb2UIColor(52, 170, 220); 

    [self.btnDone 
       addTarget:self 
       action:@selector(SetDatePickerTime:) 
       forControlEvents:UIControlEventTouchDown]; 

[self.view addSubview:self.datepicker]; 
} 
+1

Cosa vuoi fare? Qual è il tuo problema? – NobodyNada

+0

Ho bisogno di fare questo http://mjstelly.files.wordpress.com/2011/08/datepicker.png?w=230&h=300 –

risposta

8

Creare un selettore di date, quindi aggiungilo come vista di input del campo in questione (self.fieldInQuestion.inputView = datePicker). Successivamente, crea un numero UIToolBar (altezza 44) con l'elemento UIBarButton con il titolo "Fatto", target di self e un selettore (ad esempio @selector (done)). Aggiungi questo come vista accessi di input dello stesso campo in cui hai fatto il selettore di date una vista di input per (self.fieldInQuestion.inputAccessoryView = UIToolbarInstance). Nel metodo selector (- (void) fatto nell'esempio sopra), assicurati di usare [self.fieldInQuestion resignFirstResponder] e lo eliminerà.

+0

ottengo inputAccessoryView è una proprietà di sola lettura quando si prova ad assegnare il mio uitoolbar ad esso – user1709076

+0

@ user1709076 Usa '[fieldInQuestion setInputAccessoryView: toolbar]' –

0

FACCIO !!!!

-(IBAction)ChooseDate:(id)sender{ 

btnDone = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 

[done setTitle:@"GO!" forState:UIControlStateNormal]; 
btnDone.backgroundColor = UIColorFromRGB(0x1F1F21); 
btnDone.frame = CGRectMake(80.0, 210.0, 160.0, 40.0); 
[btnDone addTarget:self 
      action:@selector(HidePicker:) 
forControlEvents:UIControlEventTouchUpInside]; 
[self.view addSubview:btnDone]; 


    self.datepicker= [[UIDatePicker alloc] initWithFrame:CGRectMake(0, 0, 320, 216)]; 
    self.datepicker.datePickerMode = UIDatePickerModeDate; 
    datepicker.backgroundColor = Rgb2UIColor(52, 170, 220); 

    [self.view addSubview:self.datepicker]; 
} 


-(IBAction)HidePicker:(id)sender{ 
[UIView animateWithDuration:0.5 
       animations:^{ 
        datepicker.frame = CGRectMake(0, -250, 320, 50); 
       } completion:^(BOOL finished) { 
        [datepicker removeFromSuperview]; 
        [btnDone removeFromSuperview]; 
       }]; 

[self.datepicker removeFromSuperview]; 
NSDateFormatter *outputFormatter = [[NSDateFormatter alloc] init]; 
[outputFormatter setDateFormat:@"ddMMyyyy"]; 

//NSLOG 
NSLog(@"%@",[outputFormatter stringFromDate:self.datepicker.date]); 

}

0

creare un UIView e aggiungerlo alla schermata principale. Aggiungi un UIDatePicker al nuovo UIView. Aggiungi due UIButton a UIView.

4

L'immagine di riferimento della tua domanda sta dimostrando che l'applicazione sta usando UIToolbar e mi assumerà che quando toccando campo della data di testo il DatePicker con il tasto Done appears.And per questo nel file di some.h

/*****keyboard Done button ***/ 



#import <UIKit/UIKit.h> 

@interface ViewController : UIViewController 
{ 
    IBOutlet UIDatePicker *picker1; 
    IBOutlet UITextField *txtFld; 

} 
@property (nonatomic, retain) UIToolbar *keyboardToolbar; 

@end 

nel file di some.m

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view from its nib. 
     [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil]; 
picker1=[[UIDatePicker alloc] initWithFrame:CGRectMake(0, 0, 320, 300)];//frames are just for demo 
[txtFld setInputView:picker1]; 
} 

- (void)keyboardWillShow:(NSNotification *)notification 
{ 
    if(keyboardToolbar == nil) { 
     keyboardToolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 410, 320, 44)] ; 
     [keyboardToolbar setBarStyle:UIBarStyleBlackTranslucent]; 
     [keyboardToolbar sizeToFit]; 

     [UIView beginAnimations:nil context:NULL]; 
     [UIView setAnimationDuration:0.4]; 

     UIBarButtonItem *flexButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:nil]; 

     UIBarButtonItem *doneButton1 =[[UIBarButtonItem alloc] initWithTitle:@"Done" style:UIBarButtonItemStyleDone target:self action:@selector(resignKeyboard)]; 
     NSArray *itemsArray = [NSArray arrayWithObjects:flexButton,doneButton1, nil]; 

     [keyboardToolbar setItems:itemsArray]; 


     [txtFld setInputAccessoryView:keyboardToolbar]; 
     [self.view addSubview:keyboardToolbar]; 
     [UIView commitAnimations]; 
    } 
} 



-(void)resignKeyboard { 

    [keyboardToolbar removeFromSuperview]; 
    [txtFld resignFirstResponder]; 
///do nescessary date calculation here 

    } 

enter image description here

7

Con Swift

0.123.
// Place this code inside your ViewController or where you want ;) 

var txtField: UITextField = UITextField(frame: CGRectMake(0, 0, 200, 50)) 

// the formatter should be "compliant" to the UIDatePickerMode selected below 
var dateFormatter: NSDateFormatter { 
    let formatter = NSDateFormatter() 
    // customize the locale for the formatter if you want 
    //formatter.locale = NSLocale(localeIdentifier: "it_IT") 
    formatter.dateFormat = "dd/MM/yyyy" 
    return formatter 
} 

override func viewDidLoad() { 
    super.viewDidLoad() 

    // date picker setup 
    let datePickerView:UIDatePicker = UIDatePicker() 

    // choose the mode you want 
    // other options are: DateAndTime, Time, CountDownTimer 
    datePickerView.datePickerMode = UIDatePickerMode.Date 

    // choose your locale or leave the default (system) 
    //datePickerView.locale = NSLocale.init(localeIdentifier: "it_IT") 

    datePickerView.addTarget(self, action: "onDatePickerValueChanged:", forControlEvents: UIControlEvents.ValueChanged) 
    txtField.inputView = datePickerView 

    // datepicker toolbar setup 
    let toolBar = UIToolbar() 
    toolBar.barStyle = UIBarStyle.Default 
    toolBar.translucent = true 
    let space = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.FlexibleSpace, target: nil, action: nil) 
    let doneButton = UIBarButtonItem(title: "Done", style: UIBarButtonItemStyle.Done, target: self, action: "doneDatePickerPressed") 

    // if you remove the space element, the "done" button will be left aligned 
    // you can add more items if you want 
    toolBar.setItems([space, doneButton], animated: false) 
    toolBar.userInteractionEnabled = true 
    toolBar.sizeToFit() 

    txtField.inputAccessoryView = toolBar 

    self.view.addSubview(txtField) 
} 

func doneDatePickerPressed(){ 
    self.view.endEditing(true) 
} 

func onDatePickerValueChanged(datePicker: UIDatePicker) { 
    self.txtField = dateFormatter.stringFromDate(datePicker.date) 
} 
Problemi correlati