5

私のアプリでは、View Controller を提示する必要があります。ビュー コントローラを表示するための 6.0 メソッドは、presentViewController:animated:completion: です。4.3もサポートしたいです。4.3 では、呼び出されるメソッドは presentModalViewController:animated: です。したがって、respondsToSelector: を使用して、メソッドがサポートされているかどうかを調べます。しかし、6.0用にアプリをコンパイルすると、次のような警告メッセージが表示されます

presentModalViewController:animated: は非推奨です: iOS 6.0 で最初に非推奨になりました

誰でもこの警告を取り除く方法を知っていますか? また、動作するかどうかをテストするための 4.3 デバイスも持っていません。私が書いたコードは 4.3 で動作すると仮定する必要があります。

  if([myViewController respondsToSelector:@selector(presentModalViewController:animated:)]){
      [myViewController presentModalViewController:anotherViewController animated:YES];
  }else{
      [myViewController presentViewController:anotherViewController animated:YES completion:nil];
  }
4

3 に答える 3

3

あなたはそれが役立つかもしれないので反対のチェックをすることができrespondsToSelectorます、そしてあなたが古いバージョンをサポートしているならこれは実際に行く方法です:)

if ([self respondsToSelector:@selector(presentViewController:animated:completion:)]){
    [self presentViewController:anotherViewController animated:YES completion:nil];
} else {
    [self presentModalViewController:anotherViewController animated:YES];
}
于 2013-03-06T15:58:11.550 に答える
1

コードにプラグマを使用して警告を有効/無効にすることができますが、使いやすいとは言えません。そして、この種の警告の特定のプラグマを覚えていません。しかし、ここにいる何人かの人はあなたに言うでしょう。

ちなみにシンプルに使えます

[id performSelector:<#(SEL)#> withObject:<#(id)#>]

トリックを行います

于 2013-03-06T16:02:09.710 に答える
0

展開ターゲットを誤って 6.0 に設定してしまいました。そのため、前述の警告メッセージが表示されていました。展開ターゲットを 4.3 (サポートする必要がある) に変更した後、警告メッセージは表示されません。答えてくれてありがとう!

于 2013-03-07T06:33:51.697 に答える