在 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";
}
}