1

たとえば、UIButton を拡張して新しいビューを表示させたい場合。これを行うために、カスタム UIButton クラス内にメソッドを作成できますか? ビューを切り替えるターゲットメソッドでボタンを初期化する場合、現在どのビューにあるかを知る必要があります。

ExpandedViewController *expandView = [self.storyboard instantiateViewControllerWithIdentifier:@"ExpandedView"];
[self presentViewController:expandView animated:NO completion:nil];

これは、コードがビュー コントローラーでどのように見えるかですが、セルフの代わりにどのビューをターゲットにするかを認識できるように、ビューをボタンに渡すにはどうすればよいでしょうか。

4

2 に答える 2

1

簡単に言えば、はい、これは可能です。

長い答えは、MVC の規則に違反するため、それを行うべきではないということです。ボタンはビューであり、コントローラーとして機能するべきではありません (これがコントローラーの目的です)。代わりに、ロジックをビュー コントローラーに任せます。

ボタンのターゲットとして設定された正しいView Controllerを取得するには、次のようにします。

viewDidDisappear:ビュー コントローラーで、ボタンから離れようとしているコントローラーのアクションを削除します 。

[myButton removeTarget:self 
                action:@selector(myButtonWasPressed:) 
      forControlEvents:UIControlEventTouchUpInside];

次に、viewWillAppear:View Controller で、表示されているコントローラーのアクションを追加します。

[myButton addTarget:self 
             action:@selector(myButtonWasPressed:) 
   forControlEvents:UIControlEventTouchUpInside];
于 2013-07-27T18:55:23.230 に答える
0

ボタンにcontainingViewControllerプロパティを設定し、ボタンを移動するときに設定することを忘れないでください。

于 2013-07-27T18:38:24.663 に答える