在 VC 之间传输数据
Transfer Data between VC
我想将数据从VC1 中的一个标签(计算结果)传输到VC2 中的另一个标签。
我在 ViewController2.m <
中收到错误 "Incompatible pointe types assigning to NSString _Nullable from UILabel"
ViewController.h:
@property (strong, nonatomic) IBOutlet UILabel *ResultVC1;
查看Controller.m:
- (IBAction)GoToVc2Button:(id)sender {
[self performSegueWithIdentifier:@"SegueToVc2" sender:self];
}
#pragma mark - Data Sending
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
if ([segue.identifier isEqualToString:@"SegueToVC2"]) {
ViewController2 *secondVC=(ViewController2 *)segue.destinationViewController;
secondVC.ResultFromVc1=self.lab;
}
}
ViewController2.h:
@property (strong, nonatomic) UILabel *labelVC2;
@property (strong, nonatomic) IBOutlet UILabel *ResultFromVc1;
ViewController2.m:
NSLog(@"Result From Vc1 is%@",self.ResultFromVc1);
_labelVC2.text=self.ResultFromVc1;
查看导致错误的行的代码。阅读错误。很清楚问题是什么。您正在将 UILabel
分配给 NSString
属性。
_labelVC2.text=self.ResultFromVc1;
应该是:
_labelVC2.text=self.ResultFromVc1.text;
但是为什么要将 UILabel
传递给 UILabel
?您应该将 NSString
传递给 NSString
。然后使用字符串设置标签的文本。
您正在尝试将一个 VC 的视图组件(viewController1 中的实验室)设置为另一个 VC 的视图组件([=13= 的标签VC2 ]2).这不是正确的做法。如果你只是想复制结果,你可以像这样传递结果字符串:
if ([segue.identifier isEqualToString:@"SegueToVC2"]) {
ViewController2 *secondVC=(ViewController2 *)segue.destinationViewController;
secondVC.labelVC2.text =self.ResultVC1.text;
}
In VC2
@property (strong,nonatomic) NSString *strVal;
-(void) ViewDidLoad
{
labelVC2.text=strVal;
}
In VC1
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
if ([segue.identifier isEqualToString:@"SegueToVC2"]) {
ViewController2 *secondVC=(ViewController2 *)segue.destinationViewController;
secondVC.strVal=@"Hello";
}
}
我想将数据从VC1 中的一个标签(计算结果)传输到VC2 中的另一个标签。 我在 ViewController2.m <
中收到错误 "Incompatible pointe types assigning to NSString _Nullable from UILabel"ViewController.h:
@property (strong, nonatomic) IBOutlet UILabel *ResultVC1;
查看Controller.m:
- (IBAction)GoToVc2Button:(id)sender {
[self performSegueWithIdentifier:@"SegueToVc2" sender:self];
}
#pragma mark - Data Sending
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
if ([segue.identifier isEqualToString:@"SegueToVC2"]) {
ViewController2 *secondVC=(ViewController2 *)segue.destinationViewController;
secondVC.ResultFromVc1=self.lab;
}
}
ViewController2.h:
@property (strong, nonatomic) UILabel *labelVC2;
@property (strong, nonatomic) IBOutlet UILabel *ResultFromVc1;
ViewController2.m:
NSLog(@"Result From Vc1 is%@",self.ResultFromVc1);
_labelVC2.text=self.ResultFromVc1;
查看导致错误的行的代码。阅读错误。很清楚问题是什么。您正在将 UILabel
分配给 NSString
属性。
_labelVC2.text=self.ResultFromVc1;
应该是:
_labelVC2.text=self.ResultFromVc1.text;
但是为什么要将 UILabel
传递给 UILabel
?您应该将 NSString
传递给 NSString
。然后使用字符串设置标签的文本。
您正在尝试将一个 VC 的视图组件(viewController1 中的实验室)设置为另一个 VC 的视图组件([=13= 的标签VC2 ]2).这不是正确的做法。如果你只是想复制结果,你可以像这样传递结果字符串:
if ([segue.identifier isEqualToString:@"SegueToVC2"]) {
ViewController2 *secondVC=(ViewController2 *)segue.destinationViewController;
secondVC.labelVC2.text =self.ResultVC1.text;
}
In VC2
@property (strong,nonatomic) NSString *strVal;
-(void) ViewDidLoad
{
labelVC2.text=strVal;
}
In VC1
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
if ([segue.identifier isEqualToString:@"SegueToVC2"]) {
ViewController2 *secondVC=(ViewController2 *)segue.destinationViewController;
secondVC.strVal=@"Hello";
}
}