如何在UIView中执行performSegueWithIdentfier

时间:2013-03-08 14:54:29

标签: uiview uibutton segue ibaction

好的,所以我在UIImageView中嵌入了一个UIButton,它构成了UIView的一部分。

按钮的选择器调用应该运行的方法:

  

[self performSegueWithIdentifier:@“SegueToMoreInfo”];

然而我收到错误: 在'myclassname'的接口处没有可见声明选择器'performSegueWithIdentifier'。

基本上我真的需要在UIView中执行一个segue。如果不可能,我将如何从UIViewController调用?

编辑:更多信息:

//adding button
UIButton *attractionButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[attractionButton addTarget:self
           action:@selector(buttonClicked:)
           forControlEvents:UIControlEventTouchUpInside];
[attractionButton setTitle:@"Attraction Info" forState:UIControlStateNormal];
attractionButton.frame = CGRectMake(80.0, 80, 160.0, 40.0);
[_image1 addSubview:attractionButton];

我的方法:

 (IBAction)buttonClicked:(id)sender
{
    [self performSegueWithIdentifier:@"SegueToMoreInfo" sender:sender];
}

1 个答案:

答案 0 :(得分:1)

[self performSegueWithIdentifier:@"aseguename" sender:self];

是一个UIViewController方法。这就是你得到这个错误的原因。除了通过协议之外,视图不应与ViewControllers通信。

话虽如此,你却以错误的方式解决这个问题。按钮和其他UIView对象的IBActions应该在ViewController中。所以我会将IBAction移动到你的View Controller并将它从那里挂到按钮上。然后在IBAction中插入您的代码。

发布代码后更新: 发布的所有代码都应该在View Controller中。我只想改变:

[_image1 addSubview:attractionButton];

[self.view addSubview:attractionButton];

或者如果您真的希望该按钮成为图像的子视图,那么您可以保留代码,只需确保为该图像创建IBOutlet属性,从界面构建器中的图像到View Controller并调用它_image1。

希望这有帮助