web-dev-qa-db-ja.com

iOS 7のUIAlertView内にサブビューを追加する方法は?

ITunesストアにUILabelUIWebViewUIAlertViewを表示するアプリケーションがあります。セッションビデオによると、addSubViewUIAlertViewは機能しません。彼らはContentViewについて話しました。しかし、GM Seeds SDK)では、そのプロパティを見つけることができず、他の方法はないようです。

できることは、UIViewのカスタムサブクラスを作成し、UIAertViewのように動作させることだけです。他の簡単な解決策を提案できますか?

助けてくれてありがとう。

21
Apurv

IOS7ではaccessoryViewcustomContentViewに実際に変更できます(iOS8でも同様です)UIAlertView

[alertView setValue:customContentView forKey:@"accessoryView"];

このコードを試してください:

UIAlertView *av = [[UIAlertView alloc] initWithTitle:@"TEST" message:@"subview" delegate:nil cancelButtonTitle:@"NO" otherButtonTitles:@"YES", nil];
UIView *v = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 80, 40)];
[av setValue:v forKey:@"accessoryView"];
v.backgroundColor = [UIColor yellowColor];
[av show];

呼び出しの前にカスタムaccessoryViewを設定する必要があることに注意してください[alertView show]

enter image description here

102
malex

AddSubviewはiOS 7では使用できません。

唯一の方法は、UIAlertViewとして機能できるカスタムUIViewサブクラスを作成することです。 Githubでいくつかのコンポーネントを見つけることができました。

リンクされたもの カスタムアラート はうまく機能しているようです。適切なバージョンチェックを行うことにより、ネイティブUIAlertViewまたはCustomAlertViewを選択できます。

10
Apurv

UIAlertViewにサブビューを追加することは、iOS7で以前のiOSバージョンと異なります。次のようなものを試してください:

if (floor(NSFoundationVersionNumber) > NSFoundationVersionNumber_iOS_6_1) {
    [myAlertView setValue:myCustomView forKey:@"accessoryView"]; //works only in iOS7
} else {
    myAlertView.message = @"\n"; //or just add \n to the end of the message (it's a workaround to create space inside the alert view
    [myAlertView addSubview:myCustomView];
}

[myAlertView show]; //show the alert AFTER CUSTOMIZATION  
3
Andra Todorescu