UILabel 到 UILabel

UILabel to UILabel

我是初学者,所以对于任何似乎被忽视或简单的事情,我深表歉意。

基本上,我想要做的是让屏幕上的日期选择器更新 UILabel,然后获取更新 UILabel 的结果并将其推回到前一个屏幕上的另一个 UILabel。我的日期选择器运行良好,它按预期更新了 UILabel,但我不知道如何对其进行编码,以便我可以使用 DatePicker 的结果更新第一个 UILabel。这是我的 DatePicker。

class StartDatePickerViewController: UIViewController {


    @IBOutlet weak var dateLabel: UILabel!
    @IBOutlet weak var datePicker: UIDatePicker!


    override func viewDidLoad() {
    super.viewDidLoad()

    datePicker.addTarget(self, action: Selector("datePickerChanged:"), forControlEvents: UIControlEvents.ValueChanged)

    // Do any additional setup after loading the view.
}

func datePickerChanged(datePicker:UIDatePicker) {
    var dateFormatter = NSDateFormatter()

    dateFormatter.dateStyle = NSDateFormatterStyle.ShortStyle

    var strDate = dateFormatter.stringFromDate(datePicker.date)
    dateLabel.text = strDate
}

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

我需要 StartDatePickerViewController 来更新我在 AddNewTradeViewController 上的 UILabel startDateLabel,但我不确定如何正确处理这个问题。任何建议将不胜感激!

您应该使用一种称为委托的模式。这意味着,您从 datePickerChanged 调用 AddNewTradeViewController 上的指定方法。

如何在 Swift 中设置委派可以找到 here

我从你的问题中了解到,当你将它从第二个视图推回时,你想更新第一个屏幕上的 UILabel。

如果我的理解是正确的,请按如下操作。

首先在你的第一个视图控制器中定义一个 NSString 属性

@property (strong, nonatomic) NSString* lblString;

现在,当从您的 secondViewController 弹出到您的 firstviewContoller 时,只需将更新后的值分配给它的 属性 命名为 lblString。

UINavigationController 维护 viewControllers 中所有推送控制器的列表,并且根控制器始终为 0。

Firstcontroller *firstcontroller = (Firstcontroller *)[self.navigationController.viewControllers objectAtIndex:0];
myController.lblString = @"Your Updated DatePickerValue" ;
[self.navigationController popToViewController:myController animated:YES];

现在,当您 popBack 到 firstViewcontroller 时,lblString 已经更新了值,您可以在 firstViewController 中使用任何您想使用的地方。

您可以使用 NSNotification Add Observer 或 Delegation,与直接将数据发送到您应该遵循的模式相比,这会更好。当你打算从第二个 viewController 弹出到第一个 viewController 时,你可以调用委托模式或 NSNotification Observer(如果你想在多个地方显示你的标签数据,那么你可以使用NSNotification)。否则委托模式将有利于一对一的消息传递。 希望对您有所帮助。