我是一个初学者,所以我为任何看起来被忽视或简单的事情道歉。
基本上,我要做的是在屏幕上设置一个日期选择器,更新一个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更新UILabel startDateLabel上的AddNewTradeViewController,我不知道如何正确地处理这个问题。任何建议都将不胜感激!
发布于 2015-01-13 07:38:19
您可以使用NSNotification添加观察者或委托,这将更好地与直接发送数据相比,您应该遵循该模式。当您要从第二个viewController弹出到第一个视图控制器时,您可以调用委托模式或NSNotification观察者(如果您想在多个地方显示标签数据,则可以使用NSNotification)。否则,委托模式将有利于一对一的消息传递。希望这对你有帮助。
发布于 2015-01-13 07:10:41
您应该使用一种称为委托的模式。这意味着在AddNewTradeViewController上从datePickerChanged调用指定的方法。
如何在Swift中设置委托,可以找到here。
发布于 2015-01-13 07:19:34
我从您的问题中了解到,当您将UILabel从SecondView上推回来时,您希望在第一个屏幕上更新它。
如果我的理解是正确的,那么请如下所示。
首先在第一个视图控制器中定义一个NSString属性
@property (strong, nonatomic) NSString* lblString;现在,当弹出从您的firstviewContoller返回到您的secondViewController时,只需将更新后的值赋值给其名为lblString的属性。
UINavigationController在viewControllers中维护所有推送控制器的列表,根控制器总是在0。
Firstcontroller *firstcontroller = (Firstcontroller *)[self.navigationController.viewControllers objectAtIndex:0];
myController.lblString = @"Your Updated DatePickerValue" ;
[self.navigationController popToViewController:myController animated:YES];现在,lblString已经更新了popBack到firstViewController时的值,并且可以在firstViewcontroller中的任何地方使用。
https://stackoverflow.com/questions/27916512
复制相似问题