我正在尝试将数据从1个viewcontroller传递到另一个,但是NSString在某处丢失了。我提前道歉,我觉得我在这里丢失了一些愚蠢的东西。我已经阅读了很多这方面的帖子,但我无法弄清楚为什么我的NSStrings在视图之间迷失了。如果有人能给我指针我真的很感激:
ViewController1将payee.name传递给ViewController2 payeeNameText:
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
if([segue.identifier isEqualToString:@"makePayment"]){
VC2* paymentController = (VC2*)[segue destinationViewController];
paymentController.payeeNameText = [payee.name copy];
}
}
ViewController2尝试使用该数据在payeeName UILabel中显示收款人姓名:
- (void)viewDidLoad {
[super viewDidLoad];
NSLog(@" test %@", self.payeeNameText);
self.payeeName.text = [NSString stringWithFormat:@"%@", self.payeeNameText];
}
它在NSLog语句中正确打印出来,但文本字段显示为null。我在点击一个按钮之后也打印出相同的变量,并且它也在那里。
这是我在View Controller 2头文件中对收款人的定义:
@property (nonatomic, copy) NSString *payeeNameText;
以及我对文本字段的定义:
@property (nonatomic) IBOutlet UILabel *payeeName;
如果我将paymentController.payeeNameText设置为字符串文字,例如@“test” - 一切都按预期工作。
如果有人能帮助我,我已经坚持了一段时间,我会非常感激。谢谢!
答案 0 :(得分:0)
它转向我试图显示从http获取请求返回的数据,但是我在按钮单击时显示模态segue并返回返回的数据。因此,似乎存在竞争条件且数据未正确设置。
首先,我将我的segue改为"显示" - 这最终向我展示了2个单独的屏幕1,没有数据,然后用数据替换了一个(这就是我发现这个错误的方式)
所以解决方法是从我的按钮中删除我的segue并将其附加到我的View Controller,然后在我的get请求返回后只调用一次。