2016-04-23 51 views
0

我添加了一個日期選擇器作爲子視圖,我期望的是,當我按下「更改日期」按鈕時,日期選擇器將顯示在視圖的底部。但現實是simulation result子視圖的位置不是我所期望的

@IBAction func onUpdateBirthday(sender: UIButton) { 
    showChooseBirthday() 
} 

func showChooseBirthday() { 

    view.addSubview(chooseBirthday) 

    let bottomConstraint = chooseBirthday.bottomAnchor.constraintEqualToAnchor(view.bottomAnchor) 
    let leftConstraint = chooseBirthday.leftAnchor.constraintEqualToAnchor(view.leftAnchor) 
    let rightConstraint = chooseBirthday.rightAnchor.constraintEqualToAnchor(view.rightAnchor) 
    let heightContraint = chooseBirthday.heightAnchor.constraintEqualToConstant(60) 
    NSLayoutConstraint.activateConstraints([bottomConstraint,leftConstraint,rightConstraint,heightContraint]) 
    view.layoutIfNeeded() // re-layout the view 

    self.chooseBirthday.alpha = 0 
    UIView.animateWithDuration(0.4) { 
     self.chooseBirthday.alpha = 1 
    } 

這裏是a part of storyboard

+0

你爲什麼不打開pickerview作爲inputview –

+0

我真的很抱歉,在迅速IAM新的,你有什麼樣? –

+0

請查看http://blog.apoorvmote.com/uipickerview-as-inputview-to-uitextfield-in-swift/ –

回答

1

正如其他人所說,您可以將日期選擇器添加到UITextField。這裏是一個例子,我希望它能幫助你。 Result here

import UIKit 

class ViewController: UIViewController { 

    @IBOutlet weak var birthdayTextField: UITextField! 
    var birthdayPicker = UIDatePicker() 

    override func viewDidLoad() { 
     super.viewDidLoad() 
      configureBirthdayPicker() 
     } 

    func configureBirthdayPicker(){ 

     birthdayPicker.datePickerMode = .Date 
     birthdayPicker.maximumDate = NSDate() 
     birthdayPicker.tintColor = UIColor.blackColor() 
     birthdayPicker.backgroundColor = UIColor.groupTableViewBackgroundColor() 

     let toolBar = UIToolbar() 
     toolBar.barTintColor = UIColor.groupTableViewBackgroundColor() 
     toolBar.barStyle = UIBarStyle.Default 
     toolBar.translucent = true 
     toolBar.tintColor = UIColor.blueColor() 
     toolBar.sizeToFit() 

     let doneButton = UIBarButtonItem(title: "Done", style: UIBarButtonItemStyle.Plain, target: self, action: "donePicker:") 
     let spaceButton = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.FlexibleSpace, target: nil, action: nil) 
     let cancelButton = UIBarButtonItem(title: "Cancel", style: UIBarButtonItemStyle.Plain, target: self, action: "cancelPicker:") 

     toolBar.setItems([cancelButton, spaceButton, doneButton], animated: false) 
     toolBar.userInteractionEnabled = true 

     birthdayTextField.inputView = birthdayPicker 
     birthdayTextField.inputAccessoryView = toolBar 

    } 

    func donePicker(doneclicked:UIButton){ 
     print("done clicked") 
     birthdayTextField.resignFirstResponder() 
    } 

    func cancelPicker(cancelclicked:UIButton){ 
     print("cancel clicked") 
     birthdayTextField.resignFirstResponder() 
    } 
} 
0

嘗試改變translatesAutoresizingMaskIntoConstraints到無代碼

1

您應該使用,而不是按鈕文本框。並將pickerview設置爲inputview的文本字段,因此當您選擇文本字段時,它將打開yourdatepicker而不是keyboard

有很多教程可用,只是谷歌它,如果你沒有太多的想法。

並且在您的代碼中,您應該設置translatesAutoresizingMaskIntoConstraintsNO

希望這會有所幫助。

相關問題