您好我以编程方式创建了按钮,并将其连接到另一个视图,但我收到了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 我的警告
直接从视图控制器启动的Segues必须具有可用于的标识符 - [UIViewController performSegueWithIdentifier:sender:]
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([[segue identifier] isEqualToString:@"WeekView"]) {
[segue.destinationViewController setTitle:@"WeekView"];
}
}
答案 0 :(得分:30)
直接从视图控制器启动的Segues必须具有可用于的标识符 - [UIViewController performSegueWithIdentifier:sender:]
当您直接从Storyboard中的View Controller拖动segue时(而不是从按钮或任何操作控件中)并且不键入标识符(名称)时会出现此警告。
你必须给这些人一个标识符,否则无法以编程方式调用它们......这就是为什么你要像这样链接一个segue的唯一原因。
在Xcode 8中,您应该能够双击警告,让故事板显示违规的segue,以便您可以为其添加名称。
答案 1 :(得分:12)
这解决了我的问题。
转到故事板>检查所有Push或Pop关系segue。
选择每个segue关系>检查属性检查器属性>故事板Segue部分
在该部分中为所有segue提供标识符。
答案 2 :(得分:6)
在Xcode 5中,我通过不仅命名segues而且命名它们导致的视图控制器来消除此警告 - 每个视图控制器都需要一个Storyboard ID。如果您只命名segues,那么(误导性)警告仍会出现。
答案 3 :(得分:3)
我有同样的警告。如果它有一个标识符,你必须检查每个segue,如XCool所说。
Xcool - 回顾一个较旧的项目时我也有这个问题。我不得不点击每个故事板segue并检查它是否来自视图控制器。如果是,那么我给它一个标识符。
同时检查展开细分!这解决了我的问题。