【问题标题】:Xcode: Passing label to second view?Xcode:将标签传递给第二个视图?
【发布时间】:2013-01-29 09:46:02
【问题描述】:
我的第一个视图控制器上有两个位置标签,我需要在打开时将它们显示在另一个视图控制器上,实现这一点的最佳方法是什么?
我要传递的标签如下所示:
latitudeLabel.text = [NSString stringWithFormat:@"latitude=%f", location.coordinate.latitude];
longitudeLabel.text = [NSString stringWithFormat:@"longitude=%f", location.coordinate.longitude];
【问题讨论】:
标签:
objective-c
xcode
cocoa-touch
location
【解决方案1】:
我已经创建了一个用于在类之间共享数据的示例。你需要做的就是解释here
【解决方案2】:
在推送 secondViewController 之前,您可以将标签添加为第二个 ViewController 视图的子视图
SecondViewController *cntr = [[SecondViewController alloc] initWithNibName:@"" bundle:nil];
[cntr.view addSubview latitudeLabel];
[cntr.view addSubview longitudeLabel];
[self.navigationController pushViewController:cntr animated:YES]
【解决方案3】:
你必须在两个视图控制器上创建相同的标签并且只传递字符串数据。您可以使用属性将参数从一个类传递到另一个类(因为它们是公共的)。
在第一个视图控制器 .m:
- (void)openSecondViewController {
SecondViewController *controller = [SecondViewController alloc] init];
controller.data = [NSArray arrayWithObjects:@"First String", @"Second String", nil];
[self.navigationController pushViewController:controller];
}
在第二个视图控制器.h:
@interface SecondViewController : UIViewController
@property (weak, nonatomic) id data;
@property (weak, nonatomic) IBOutlet UILabel *label1;
@property (weak, nonatomic) IBOutlet UILabel *label2;
@end
在第二个视图控制器.m:
- (void)setData:(id)data {
self.label1.text = [data objectAtIndex:0];
self.label2.text = [data objectAtIndex:1];
}