2016-05-29 18 views
5

Bir iPhone uygulaması yaparak Swift'i öğreniyorum. Çalıştığım sorun bir UIPickerView uygulamasını içeriyor. Basıldığında, UIPickerView'in ekranın altından Ana Görünüm üzerinde belirli bir uzunluğa yükselmesi gereken bir düğmem var. Daha sonra kullanıcı UIPickerView'dan bir öğe seçtiğinde, UIPickerView tekrar ana ekrandan ana sayfanın dışına iner.Bir düğmeye bastıktan sonra uygulamanın altından UIPickerView yükselişini nasıl yapabilirim?

Çoğaltmaya çalıştığım şeyin iyi bir örneği, saat uygulamasında her şeyi kapsayan ve etiketsiz ve anahtarlar olmadan, saat uygulamasında bir alarm eklerken olabilir.

Ayrıca PickerView tetikleyicisinden aldığım öğeleri bir işleve sahip olmak isterdim, ancak bu engelden geçtikten sonra olacağını düşünüyorum.

Şimdiye kadar sahip olduğum ilgili kod.

@IBOutlet weak var pickerContainer: UIView! 
@IBOutlet weak var pickerView: UIPickerView! 
let picker_values = ["val 1", "val 2", "val 3", "val 4"]; 
    override func viewDidLoad() { 
    super.viewDidLoad() 

} 


@IBAction func buttonPressed(sender: AnyObject) { 
    print("pressing a die!"); 

} 

Şimdiden teşekkürler!

cevap

7

Tamam bir UITextField

Adım 01 kullanarak bunu yapabilirsiniz: - Eğer stil görünmez ve set tonu rengi beyaz/açık renk kurulu bir UITextField.Select ekle

. enter image description here

enter image description here

Adım 02: -

Sonra UITextField üstünde bir UIButton eklemek aynı genişlik yükseklik ekleyin ve constraints.Here stroy kurulu bir hiyerarşi,

enter image description here

Adım 03: -

0 bu bir @IBAction fonk düğmeye

Bağlan düğmesine (gönderen: AnyObject) ve @IBAction fonk TextField (gönderen: UITextField) UITextField bağlamak: -

O zaman bu sınıf işlevlerine BUTTON ve TextField bağlayın. Bu arada

import UIKit 

class ViewController: UIViewController, UITextFieldDelegate, UIPickerViewDataSource, UIPickerViewDelegate { 

@IBOutlet weak var textFeild: UITextField! 
let picker_values = ["val 1", "val 2", "val 3", "val 4"] 
var myPicker: UIPickerView! = UIPickerView() 

override func viewDidLoad() { 
    super.viewDidLoad() 
    self.myPicker = UIPickerView(frame: CGRectMake(0, 40, 0, 0)) 
    self.textFeild.delegate = self 
    self.myPicker.delegate = self 
    self.myPicker.dataSource = self 
    // Do any additional setup after loading the view, typically from a nib. 
} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 

//MARK: - Delegates and data sources 

func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int { 
    return 1 
} 
func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { 
    return picker_values.count 
} 

//MARK: Delegates 

func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? { 
    return picker_values[row] 
} 

func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { 
    //Your Function 
    print("Hello") 
} 

@IBAction func button(sender: AnyObject) { 
    self.textFeild.becomeFirstResponder() 
} 

func cancelPicker(sender:UIButton) { 
    //Remove view when select cancel 
    self.textFeild.resignFirstResponder() // To resign the inputView on clicking done. 
} 

@IBAction func textField(sender: UITextField) { 
    //Create the view 
    let tintColor: UIColor = UIColor(red: 101.0/255.0, green: 98.0/255.0, blue: 164.0/255.0, alpha: 1.0) 
    let inputView = UIView(frame: CGRectMake(0, 0, self.view.frame.width, 240)) 
    myPicker.tintColor = tintColor 
    myPicker.center.x = inputView.center.x 
    inputView.addSubview(myPicker) // add date picker to UIView 
    let doneButton = UIButton(frame: CGRectMake(100/2, 0, 100, 50)) 
    doneButton.setTitle("Done", forState: UIControlState.Normal) 
    doneButton.setTitle("Done", forState: UIControlState.Highlighted) 
    doneButton.setTitleColor(tintColor, forState: UIControlState.Normal) 
    doneButton.setTitleColor(tintColor, forState: UIControlState.Highlighted) 
    inputView.addSubview(doneButton) // add Button to UIView 
    doneButton.addTarget(self, action: "doneButton:", forControlEvents: UIControlEvents.TouchUpInside) // set button click event 

    let cancelButton = UIButton(frame: CGRectMake((self.view.frame.size.width - 3*(100/2)), 0, 100, 50)) 
    cancelButton.setTitle("Cancel", forState: UIControlState.Normal) 
    cancelButton.setTitle("Cancel", forState: UIControlState.Highlighted) 
    cancelButton.setTitleColor(tintColor, forState: UIControlState.Normal) 
    cancelButton.setTitleColor(tintColor, forState: UIControlState.Highlighted) 
    inputView.addSubview(cancelButton) // add Button to UIView 
    cancelButton.addTarget(self, action: "cancelPicker:", forControlEvents: UIControlEvents.TouchUpInside) // set button click event 
    sender.inputView = inputView 
} 

} 

bu gibi "Düzenleme başlayın mı" dır etkinliği göndermiş UITextField emin olun: -

bu seni yardımcı olacağını

enter image description here

Umut ...

+0

benim için çalıştı! –

3
  • Çerçeve ile bir UIPickerView oluşturun CGRectZero olarak
  • Bir UITextFie oluşturun ld.
  • textField öğesini gizli olarak ayarlayın.
  • UIButton oluşturun.
  • Düğmeyi tıklatıp, textField öğesini çağırın.beFinst Cevaplayıcı()

Thats it!

İlgili konular