【发布时间】:2016-03-20 18:17:55
【问题描述】:
我正在尝试将数据从 1 个视图控制器传递到另一个,但 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" - 一切都会按预期工作。
如果有人可以帮助我,我已经坚持了一段时间,我将不胜感激。谢谢!
【问题讨论】:
-
尝试在
viewWillAppear中使用payeeNameText而不是viewDidLoad -
你确定
self.payeeName不是nil? -
谢谢大家的建议。我已经更新了帖子,但我认为它与设置或分配位置没有任何关系,因为如果我在 prepareForSegue 中为 self.payeeNameText 硬编码一个文字字符串,一切正常。
-
尝试记录
self.payeeName的值。 (顺便说一句,你为什么使用stringWithFormat?)
标签: ios objective-c uiviewcontroller segue