使用prepareForSegue作为button

您好我创buildbutton编程,我连接到另一个视图的button,但我有segue问题,我应该使用prepareForSegue方法的故事板,但我不知道如何有esome样品到互联网,但我会得到错误,当我用样品,你能帮我吗?

提前致谢!

这是我的代码

创buildbutton

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]; 

button的动作

 -(void)buttonPressed:(UIButton *)button { NSLog(@"button %u -- frame: %@", button.tag, NSStringFromCGRect(button.frame)); WeekView *crtObj=[[WeekView alloc]initWithNibName:@"WeekView" bundle:nil]; [self.navigationController pushViewController:crtObj animated:YES]; [crtObj release]; } 

准备继续

 - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { if ([[segue identifier] isEqualToString:@"WeekView"]) { // Get reference to the destination view controller WeekView *vc = [segue destinationViewController]; // Pass any objects to the view controller here, like... [vc setMyObjectHere:object]; //// I don't know what should I write instead of object }} 

错误

在这里输入图像说明

编辑2:****我有一个警告:

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

 - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { if ([[segue identifier] isEqualToString:@"WeekView"]) { // Get reference to the destination view controller // WeekView *vc = [segue destinationViewController]; // Pass any objects to the view controller here, like... // [vc setMyObjectHere:object]; [segue.destinationViewController setTitle:@"WeekView"]; }} 

将视图控制器推到导航控制器上真的有两种方法。

  1. 旧的方式,所有的代码。 那是你做的。 在这一点上,你完全可以忘记这个问题。

  2. 新的方法:在Storyboard中build立Segue(从一个视图控制器推到一个新的视图控制器,你也在Storyboard中定义),给它一个Identifier名称,然后使用这个代码来推动视图控制器。

 [self performSegueWithIdentifier:myIdentifyer sender:self]; 

自我是视图控制器。 现在你可以在prepareForSegue:进行自定义了。

在这种情况下,示例代码只是告诉你在prepareForSegue:sender:可以做的事情的types。

它是build议你正在试图setMyObjectHere:将有一个方法setMyObjectHere:它会希望你传递该对象。

作为一个例子,你的类可能有一个setTitle:方法,在prepareForSegue:sender:代码中,你可以根据你正在执行的inheritance的控制器的信息来预设标题。

摆脱警告,你需要一个标识符,如下图所示:

在这里输入图像说明

“旧的代码方式”,没有更好的方式来编码,希望这有助于,但如果你以编程方式使用UIButtons和UIViews,你甚至不应该使用segues。

在应用程序委托中创build一个根视图控件,而不是仅仅popup和closures下一个视图控制器等等。

例如,这是您的视图控制器中所需的全部内容:

 -(void)nextControllerButton:(UIButton*)button{ SearchViewController *nextController = [[SearchViewController alloc] init]; nextController.username = _username.text; nextController.password = _password.text; [self.navigationController showViewController:nextController sender:self]; }