2011-03-18 20 views
8

Bir web görünümünde, bir aşağı açılan seçim kutusu olan ve her zamanki web siteleri gibi düşürmek yerine, iphone, tüm seçimleri içeren bir UIPickerView haline getirerek bir UIPickerView gibi davranırsınız Birini seçtiğinizde, seçiminizin yanında bir onay işareti görünür ve açılır kutunun değerini değiştirir. Ve UIPickerView'u kapatmak için UIPickerView'un üst kısmındaki "Bitti" düğmesini nasıl koyarsınız?UIPickerView seçin ve gizleyin

Zaten [pickerview setHidden:YES]'un pickerview'i gizlemek için kullanılan yöntem olduğunu biliyorum. Sadece UIPickerView'da "Bitti" düğmesini nasıl dahil edeceğimi bilmiyorum.

Selamlar, Chris

cevap

6

"Bitti" butonuna UIToolBar yerleştirilir.

"Done" düğmelerini eklemek için aşağıdaki UIToolBar yöntemini kullanın.

- (void)setItems:(NSArray *)items animated:(BOOL)animated { 

    UIToolbar* mypickerToolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, 320, 56)]; 
    mypickerToolbar.barStyle = UIBarStyleBlackOpaque; 
    [mypickerToolbar sizeToFit]; 

    NSMutableArray *barItems = [[NSMutableArray alloc] init]; 

    UIBarButtonItem *flexSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:nil]; 
    [barItems addObject:flexSpace]; 

    UIBarButtonItem *doneBtn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(DatePickerDoneClick)]; 
    [barItems addObject:doneBtn]; 

    [mypickerToolbar setItems:barItems animated:YES]; 

} 
+0

Esnek alanın amacı nedir? onsuz bile çalışıyor gibi görünüyor? Eski bir iş parçacığına yorum yaptığım için üzgünüm. – KVISH

+0

@KVISH flexspace, yapılan düğmeyi sağa doğru siler –

+0

Burada UIPickerView ile bağlantı göremiyorum. – VsMaX

35

Bu kod parçası, klavye olarak bir seçici görünümden dışarı kayar ve bunun üzerine bitmiş bir düğmeyi iliştirir. Temel olarak, giriş alanınızla bir inputAccessoryView ayarlamak istiyorsunuz. Girdi alanınız için bu aşağıya dokunma olayında bu yöntemi çağırmalısınız.

- (IBAction)showYourPicker:(id)sender { 

// create a UIPicker view as a custom keyboard view 
UIPickerView* pickerView = [[UIPickerView alloc] init]; 
[pickerView sizeToFit]; 
pickerView.autoresizingMask = (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight); 
pickerView.delegate = self; 
pickerView.dataSource = self; 
pickerView.showsSelectionIndicator = YES; 
self.yourPickerView = pickerView; //UIPickerView 

yourTextField.inputView = pickerView; 

// create a done view + done button, attach to it a doneClicked action, and place it in a toolbar as an accessory input view... 
// Prepare done button 
UIToolbar* keyboardDoneButtonView = [[UIToolbar alloc] init]; 
keyboardDoneButtonView.barStyle = UIBarStyleBlack; 
keyboardDoneButtonView.translucent = YES; 
keyboardDoneButtonView.tintColor = nil; 
[keyboardDoneButtonView sizeToFit]; 

UIBarButtonItem* doneButton = [[[UIBarButtonItem alloc] initWithTitle:@"Done" 
    style:UIBarButtonItemStyleBordered target:self 
    action:@selector(pickerDoneClicked:)] autorelease]; 

[keyboardDoneButtonView setItems:[NSArray arrayWithObjects:doneButton, nil]]; 

// Plug the keyboardDoneButtonView into the text field... 
yourTextField.inputAccessoryView = keyboardDoneButtonView; 

[pickerView release]; 
[keyboardDoneButtonView release]; 
} 

Son olarak, Yapıldı düğmesi [yourTextField resignFirstResponder]; seçici görünümü gizler hangi eklemek gerekir "pickerDoneClicked" yöntemini çağırır.

+0

Kendi cevabınızı koymanızı sağlayan neyi kaçırdım? – Jhaliya

+1

Üzgünüm, sadece farklı bir yaklaşım seçmenin güzel olduğunu düşünüyorum. Biri ekranın alt kısmında bir araç çubuğuna sahipken diğeri klavye/uipickerview'in üstüne bir araç çubuğu eklemektir. –

+0

Ek bilgi için teşekkürler Jacob. Gerçekten yardımcı oldu ama son yöntemin komutunun [mypicker setHidden: YES]; Doğru muyum? – Tofu

İlgili konular