20

嗨,我以编程方式创建了按钮并将其连接到另一个视图,但我收到了 segue 警告

我应该使用prepareForSegue情节提要的方法,但我不知道如何,互联网上有一些示例,但是当我使用该示例时出现错误,请您帮帮我

这是我的代码

创建按钮

 UIButton * button = [UIButton buttonWithType:UIButtonTypeCustom]; 
 button.backgroundColor=[UIColor colorWithRed: 201.0/255.0 green: 201.0/255.0 blue:201.0/255.0 alpha: 1.0];
 button.tag = currentTag;
 currentTag++;
 [button.layer setBorderColor: [[UIColor blackColor] CGColor]];
 [button.layer setBorderWidth: 1.0];
 [button setTitle:[NSString stringWithFormat:@"%d",currentTag] forState:UIControlStateNormal];
 button.frame = CGRectMake(80*x, 32*y, 80, 32); 
 [button addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside];
 [buttonView addSubview: button];

按钮操作

-(void)buttonPressed:(UIButton *)button
{
    NSLog(@"button %u -- frame: %@", button.tag, NSStringFromCGRect(button.frame));
    [self performSegueWithIdentifier:@"WeekView" sender:self];    
}

准备继续 我的警告

直接从视图控制器启动的 Segue 必须具有与 -[UIViewController performSegueWithIdentifier:sender:] 一起使用的标识符

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([[segue identifier] isEqualToString:@"WeekView"]) {
        [segue.destinationViewController setTitle:@"WeekView"];
    }
}
4

4 回答 4

31

直接从视图控制器启动的 Segue 必须有一个标识符以用于 -[UIViewController performSegueWithIdentifier:sender:]

当您直接从 Storyboard 中的视图控制器(也不是从按钮或任何操作控件)拖动 segue 并且不输入标识符(名称)时,会出现此警告。

您必须给这些标识符一个标识符,否则无法以编程方式调用它们……这是您要像这样链接 segue 的唯一原因。

在 Xcode 8 中,您应该能够双击警告以使情节提要显示有问题的 segue,以便您可以为其添加名称。

于 2012-10-11T15:59:21.143 回答
13

这解决了我的问题。

转到 Storyboard > 检查所有 Push 或 Pop 关系 segue。

选择每个 segue 关系 > 检查属性检查器属性 > Storyboard Segue 部分

在该部分中,为所有 segue 提供标识符

在此处输入图像描述

于 2014-07-28T06:38:55.557 回答
6

在 Xcode 5 中,我不仅命名了 segue,而且命名了它们导致的视图控制器,从而消除了这个警告——每个视图控制器都需要一个 Storyboard ID。如果你只命名segues,这个(误导性的)警告仍然会出现。

于 2013-10-30T19:17:27.780 回答
3

我也有同样的警告。您必须检查每个 segue 是否具有 XCool 所说的标识符。

Xcool - 回顾一个较旧的项目时,我也遇到了这个问题。我必须单击每个故事板 segue 并检查它是否来自视图控制器。如果是,那么我给它一个标识符。

还要检查你的放松赛格!这为我解决了这个问题。

于 2014-06-04T10:16:26.180 回答