3

「サインアップ」、「寄付」、「キャンセル」の 3 つのボタンがあるアラート ビューを作成しました。サインアップまたは寄付をクリックすると、特定の Web サイトでサファリが開きます。ただし、アプリを開いていずれかのボタンをクリックすると、サファリは開かず、何も実行せず、ボタンはキャンセル ボタンの異なるバージョンであるかのように機能します。これが私のコードです:

BlahBlah.h では:

@interface BlahBlah: UIViewController <UITextFieldDelegate, UIAlertViewDelegate> {
}
@end

BlahBlah.m では:

#define donate_tag 0
#import "BlahBlah.h"
@implementation BlahBlah
...
- (void) donate {
UIAlertView *alert2  = [[UIAlertView alloc] initWithTitle:@"Donate"
message:@"Function doesn't work yet :(" delegate:nil cancelButtonTitle:@"Cancel"
otherButtonTitles:@"Sign Up",@"Donate",nil];
alert2.tag = donate_tag;
[alert2 show];
[alert2 release];
}
...
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{

if(alertView.tag == donate_tag && buttonIndex == 1){
   [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://www.google.com"]];
  }
else if(alertView.tag == donate_tag && buttonIndex == 2){
   [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://www.yahoo.com"]];
  }
}
...
@end
4

1 に答える 1

1

ボタンのアクションを処理するアラート、つまりdelegateアラートビューの「」をアラートに通知する必要があります。

UIAlertViewに関連するすべてが" BlahBlah"ビューコントローラ内にあるため、alert2を作成した後、次のようにします。

alert2.delegate = self;

または、UIAlertViewインスタンス化で宣言します。

UIAlertView *alert2  = [[UIAlertView alloc] initWithTitle:@"Donate" 
    message:@"Function doesn't work yet :(" delegate:self 
    cancelButtonTitle:@"Cancel" otherButtonTitles:@"Sign Up",@"Donate",nil];
于 2012-11-02T18:37:46.810 に答える