IBOutlet不会在UI中显示其值

我正在构build一个使用storyboard的iOS应用程序。我已经在我的应用程序中使用swift实现了Google Maps,其余的代码都在Objective C中。

我的场景:

1.如图所示,当我点击位置前面的标签(在第一个视图控制器中)时,一个模式segue将打开包含map的第二个视图控制器。

2.在地图视图控制器中,当用户通过触摸移动地图的时候,我得到了一个标签中的地址值。 (类似于超级应用程序)

3.此后,只要用户按下此控制器上的完成button,它将使用自定义search和位置的值返回到第一个视图控制器。

在这里输入图像说明

问题是,这个标签的iboulet被隐藏在UI中,并且不显示它的值。 但是,当我在控制台打印这个值,我能够显示的价值。

以下是我的代码。 非常感谢帮助。

第一视图控制器代码写在swift中:

- (void)viewDidLoad { [super viewDidLoad]; _Locationlabel.text=_location; NSLog(@"location=%@",_Locationlabel.text); } 

秒视图控制器代码:

 override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) { if (segue.identifier == "locationDone") { // pass data to next view var svc = segue.destinationViewController as Host; svc.location = self.addressLabel.text; println("location\(svc.location)"); } } @IBAction func doTap(x:UIButton) { self.dismissViewControllerAnimated(true, completion: {});//This is intended to dismiss the Info sceen. println("pressed") } 

你不应该使用自定义的inheritance来返回到你的第一个视图控制器。 Segues总是创build一个视图控制器的新实例(除非使用unwind segue)。 在你的第一个视图控制器中,添加这个方法:

 - (IBAction)backFromMapView:(UIStoryboardSegue *)segue { NSLog(@"and we are back"); MapViewController* mvc = (MapViewController *)segue.sourceViewController; NSLog(@"location %@", mvc.addressLabel.text); } 

不要忘记#import <YourProjectName>-Swift.h以便Host.m知道MapViewController

然后,您可以控制从Done视图控制器Done中的Donebutton拖动到故事板中视图控制器上方栏中的橙色出口图标。 在popup的对话框中,你将selectbackFromMapView ,然后你就完成了。

在这里输入图像说明

尝试将位置存储为主机视图控制器的NSString强属性或将通知从地图发布到主机视图并在主机的viewWillAppear中,首先NSLog NSString,然后将此string作为文本分配给标签