Objective c 用segue传递数据

Objective 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

我试图将数据从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;

请验证是否已在序列图像板中设置序列的标识符


在您的情况下,标识符将是
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我在答案中添加了一些。