Objective c 用segue传递数据
我试图将数据从ViewController2中的文本字段传递到ViewController中的标签。它似乎不起作用,我也没有出错。我在我的音乐中错过了什么 ViewController2.hObjective c 用segue传递数据,objective-c,uistoryboardsegue,Objective C,Uistoryboardsegue,我试图将数据从ViewController2中的文本字段传递到ViewController中的标签。它似乎不起作用,我也没有出错。我在我的音乐中错过了什么 ViewController2.h @interface ViewController2 : UIViewController { IBOutlet UITextField *HomeTeam; } ViewController2.m -(void)prepareForSegue:(UIStoryboardSegue *)segue s
@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;
请验证是否已在序列图像板中设置序列的标识符
在您的情况下,标识符将是
HomeTeam
如果,则缺少。除非你复制粘贴错误
-(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 IsequalString:@“HomeTeam”]
返回一个BOOL
,让您知道这是否是正在执行的segue
即使这实际上没有引起问题(在本例中),您也应该这样做。随着更多信息的提供,我将更新此答案
另外,请注意,在此特定代码中,您正在目标视图控制器上设置一个NSString
属性。不是标签
假设故事板上的所有内容都正确,请确保将以下内容添加到viewDidLoad
或viewwillbeen
方法中:
HomeTeamLabel.text = HomeTeamString;
为了更好地衡量,您可能需要将HomeTeamString
从weak
更改为strong
编辑:经过一些研究…似乎目标视图控制器中的HomeTeamString
属性必须是strong
,而不是weak
。将其保留为weak
允许在prepareForSegue
方法结束时释放它(在目标视图开始时,它在prepareForSegue
结束和viewDidLoad
之间没有所有者)。将其更改为strong
将解决此问题,确保仅在释放目标视图控制器时才会释放它。使用NSLog
打印方法中homeTeamText
和vc
的值。标签是否正确连接到IB/Storyboard中的参考HomeTeamLabel
您确信segue id确实是“HomeTeam”
?您有写入segue的名称吗?您的代码可能会与丰富的“HomeTeam”以及“HomeTeam”显然同时用作文本字段名和Segue标识符的事实相混淆。这可能是因为NSString
属性很弱,将在Segue之后立即发布。尝试将其设置为strong
。通常,如果在头文件中创建属性,则应始终将属性设置为“强”。标识符为HomeTeam,但样式为modal。这有区别吗?没有。风格没有区别。@user3033493我在答案中添加了一些。