0

次のビュー階層があります: ナビゲーション コントローラー、その中に、セルにカスタム UIButtons を持つ UITableView を含む別のビュー コントローラーをプッシュしました。私は別のビュー コントローラー (MyCustomViewController2) を持っています。これは、これらすべてのものの上にアニメーションで表示したいと考えています。

しかし、私はこの階層に混乱して- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)eventおり、カスタム UIButton クラスのメソッドを上書きする方法がわかりません。私がこれまでにやってきたコードは次のとおりです。

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    MyCustomViewController2 *myVC = [[UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]] instantiateViewControllerWithIdentifier:@"MyVC"];
    [self.window addSubview: myVC.view];
}

しかし、それはとても悪いです!アニメーションがないので、削除するには削除する必要があります。次に何を試すことができますか?

4

1 に答える 1

0

UIButton をサブクラス化しないことを強くお勧めします。だから私はしません。

ただし、UIButton は UIControl のサブクラスであるため、このメソッドを直接使用できます。

- (void)addTarget:(id)target
           action:(SEL)action
 forControlEvents:(UIControlEvents)controlEvents

コードの例は次のようになります。

[self.myButton addTarget:self action:@selector(showOtherVC) forControlEvents: UIControlEventTouchUpInside];

これは、ユーザーがボタンから指を離したときに、特定のメソッド(showOtherVC)のターゲット(self)を調べます。

次に、この UIViewController メソッドを例として使用して、現在のビュー コントローラーに新しいビュー コントローラーをモーダルに表示させることができます。

-(void)showOtherVC
{
     MyCustomViewController2 *myVC = [[UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]] instantiateViewControllerWithIdentifier:@"MyVC"];
    [self presentViewController:myVC animated:true completion:nil];
}

UIControl の詳細については、こちらをご覧ください: UIControl ドキュメント

ここで他の UIViewController モーダル遷移スタイルをチェックしてください: UIViewController ドキュメント

于 2016-03-29T01:27:39.783 に答える