我试图将ViewController2中的文本字段中的数据传递给ViewController中的标签。它似乎不起作用,我没有错误。我的冥想中缺少什么?
ViewController2.h
@interface ViewController2 : UIViewController {
IBOutlet UITextField *HomeTeam;
}
ViewController2.m
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
[segue.identifier isEqualToString:@"HomeTeam"];
NSString *homeTeamText = HomeTeam.text;
ViewController *vc = [segue destinationViewController];
vc.HomeTeamString = homeTeamText;
}
ViewController.h
@property (weak, nonatomic) IBOutlet UILabel *HomeTeamLabel;
@property (weak, nonatomic) NSString *HomeTeamString;
ViewController.m
@synthesize HomeTeamString, HomeTeamLabel;
答案 0 :(得分:2)
你错过了if
。除非你复制并粘贴错误......
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if([segue.identifier isEqualToString:@"HomeTeam"]) {
NSString *homeTeamText = HomeTeam.text;
ViewController *vc = [segue destinationViewController];
vc.HomeTeamString = homeTeamText;
}
}
[segue.identifier isEqualToString:@"HomeTeam"]
会返回BOOL
,让您知道这是否是正在执行的segue。
即使这实际上并没有导致问题(在本例中),你仍然应该这样做。我会在给出更多信息后更新这个答案。
另外,请注意,在此特定代码中,您将在目标视图控制器上设置NSString
属性。不是标签......
假设故事板上的所有内容都正确无误,请务必在viewDidLoad
或viewWillAppear
方法中添加以下内容:
HomeTeamLabel.text = HomeTeamString;
为了更好地衡量,您可能需要将HomeTeamString
从weak
更改为strong
。
编辑:经过一些研究...... ,目标视图控制器中的HomeTeamString
属性似乎必须是strong
而不是weak
。将其保留为weak
可以在prepareForSegue
方法结束后立即发布(在目标视图中,prepareForSegue
结尾与viewDidLoad
之间没有所有者)。将其更改为strong
将解决问题,确保仅在目标视图控制器被释放时才会释放。
答案 1 :(得分:0)
请验证,您在故事板中设置了segue的标识符。
在您的情况下,标识符为HomeTeam
。