104

iPhone 5 の 4 インチ ディスプレイで実行するように iOS アプリを更新するために、XCode 4.5 にアップグレードしましたが、次のようなビルド エラーが表示dismissModalViewControllerAnimated:' is deprecatedされます。

[self dismissModalViewControllerAnimated:NO];

次のように、完了ハンドラー (ただし NULL に設定) を使用して、推奨されるオーバーロードに更新しようとしました。

[self dismissModalViewControllerAnimated:NO completion:NULL];

しかし、この行は 2 つのエラーをスローします。

warning: 'TabBarController' may not respond to '-presentModalViewController:animated:completion:'
Instance method '-presentModalViewController:animated:completion:' not found (return type defaults to 'id')

ありがとう!

4

6 に答える 6

306
于 2012-09-16T07:45:04.400 に答える
6

iOS 6 以降では、以下を使用できます。

[[Picker presentingViewController] dismissViewControllerAnimated:YES completion:nil];

それ以外の:

[[Picker parentViewControl] dismissModalViewControllerAnimated:YES];

...そして、次を使用できます。

[self presentViewController:picker animated:YES completion:nil];

それ以外の

[self presentModalViewController:picker animated:YES];    
于 2012-10-04T08:52:59.743 に答える
4

使用する

[self dismissViewControllerAnimated:NO completion:nil];
于 2013-10-04T11:52:26.017 に答える
3

警告はまだあります。それを取り除くために、次のようなセレクターに入れました:

if ([self respondsToSelector:@selector(dismissModalViewControllerAnimated:)]) {
    [self performSelector:@selector(dismissModalViewControllerAnimated:) withObject:[NSNumber numberWithBool:YES]];
} else {
    [self dismissViewControllerAnimated:YES completion:nil];
}

私のようなOCDを持つ人々に利益をもたらします;)

于 2013-04-18T13:49:59.570 に答える
0

私のような他の初心者に役立つ場合に使用した、対応する presentViewController バージョンを次に示します。

if ([self respondsToSelector:@selector(presentModalViewController:animated:)]) {
    [self performSelector:@selector(presentModalViewController:animated:) withObject:testView afterDelay:0];
} else {
    [self presentViewController:configView animated:YES completion:nil];
}
[testView.testFrame setImage:info]; //this doesn't work for performSelector
[testView.testText setHidden:YES];

私はViewControllerを「一般的に」使用しており、呼び出された内容に応じて(setHiddenとsetImageを使用して)モーダルViewを異なる方法で表示することができました。以前はうまく機能していましたが、 performSelector は「設定」のものを無視するため、最終的には、私が試みたように効率的にしようとすると、解決策が不十分なようです...

于 2013-04-26T21:34:33.163 に答える