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)。否则委托模式将有利于一对一的消息传递。
希望对您有所帮助。
我是初学者,所以对于任何似乎被忽视或简单的事情,我深表歉意。
基本上,我想要做的是让屏幕上的日期选择器更新 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)。否则委托模式将有利于一对一的消息传递。 希望对您有所帮助。