Swift Delegate从自定义popUp文本字段设置标签

时间:2016-02-10 22:19:09

标签: swift delegates popup protocols custom-cell

我有一个具有UIDatePicker的自定义弹出视图。更改后,更改保存时间的日期。如果日期已更改,我还希望更新CustomCell中的标签。我已经使用委托协议来更新表,但我无法使用此协议来传输保存信息。你能帮我吗?我想我已经在viewController类中连接了所有正确的代码。我已经尝试过这个答案,但我无法在目标类中设置委托,并且没有segue A Swift example of Custom Views for Data Input (custom in-app keyboard)

protocol DatePopUpViewDelegate: class {

func pastDate(date: String) // date that is chosen in picker
func isPastDateSet(isSet: Bool) // has chosen new date

}


@IBDesignable class DatePopUpView: UIView {

var delegate: DatePopUpViewDelegate?


func loadViewFromNib() -> UIView {

let bundle = NSBundle(forClass: self.dynamicType)
let nib = UINib(nibName: "DatePopUp", bundle: bundle)
let view = nib.instantiateWithOwner(self, options: nil)[0] as! UIView

delegate?.isPastDateSet(false)
return view
}

// close popup
@IBAction func closeButtonDatePopUp(sender: AnyObject) {
if dateToSave != openTime {
  if let dateToSave = dateToSave {
    SaveData.changedSaveTime = dateToSave
    delegate?.pastDate(dateToSave)
    delegate?.isPastDateSet(true)
  }

} else {
  SaveData.changedSaveTime = ""
  delegate?.isPastDateSet(false)
}
}




class SaveTableViewCell: UITableViewCell, DatePopUpViewDelegate {

var changeDateLabel: Bool = false

override func awakeFromNib() {
    super.awakeFromNib()
    // Initialization code

  changeDateLabel = false

  datePopUpViewControllert.delegate = self
}

// delegate functions
func pastDate(date: String) {
self.labelDate = date
print("del date \(date)")
}

func isPastDateSet(isSet: Bool) {
self.changeDateLabel = isSet
print("is set by delegate \(isSet)")
}

0 个答案:

没有答案