2

さて、UIViewの一部を形成するUIImageViewにUIButtonが埋め込まれています。

ボタンのセレクターは、実行する必要のあるメソッドを呼び出します。

[自己performSegueWithIdentifier:@ "SegueToMoreInfo"];

ただし、エラーが発生します。「myclassname」のインターフェイスに表示されないものは、セレクター「performSegueWithIdentifier」を宣言します。

基本的に、UIView内からセグエを実行する必要があります。不可能な場合は、代わりに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];
}
4

1 に答える 1

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

UIViewControllerメソッドです。そのため、このエラーが発生します。また、ビューは、プロトコルを介する場合を除いて、ViewControllerと通信しないでください。

そうは言っても、あなたはこれについて間違った方向に進んでいます。ボタンおよびその他のUIViewオブジェクトのIBActionは、ViewControllerにある必要があります。したがって、IBActionをView Controllerに移動し、そこからボタンにフックします。次に、そのIBActionにコードを挿入します。

コードが投稿された後に更新する:投稿されたすべてのコードは、ViewControllerにある必要があります。私はただ変更します:

[_image1 addSubview:attractionButton];

[self.view addSubview:attractionButton];

または、そのボタンを画像のサブビューにしたい場合は、コードを残して、InterfaceBuilderの画像からViewControllerにその画像のIBOutletプロパティを作成し、それを_image1と呼びます。

お役に立てれば

于 2013-03-08T15:15:25.863 に答える