2011-08-11 12 views
2

Xcodeの1つのIBActionに対して複数のUIAlertViewsをランダムに表示することは可能ですか?たとえば、複数の質問がランダムに表示されるアプリを作成しています。送信ボタンを押すと、答えが正しいかどうかを示すアラートが表示されます。私は、あるメッセージを表示したとき、次にランダムに別のメッセージを表示したときなど、警告のメッセージが異なるようにしたい。私はどのようにこれをプログラムするでしょうか?あなたの.hでXcodeで1つのIBActionに対して複数のUIAlertViewを使用できますか?

答えて

2

:あなたの.mで

@interface MyViewController : UIViewController { 
    NSArray *messages; 
} 

@property (nonatomic, retain) NSArray *messages; 

@implementation MyViewController 
@synthesize messages; 

- (dealloc) { 
    [messages release]; 
} 

- (void)viewDidLoad { 
    messages = [[NSArray alloc] initWithObjects:@"Funny Message", @"Even Funnier Message", @"Hilarious message", @"ROFL", @"OK this is getting boring...", nil]; 
} 

アラートを必要とする:

NSUInteger messageCount = [messages count]; 
int randomMessageIndex = arc4random() % messageCount; 

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Title" message:[messages objectAtIndex:randomMessageIndex] delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; 
[alert show]; 
[alert release]; 
+0

それはメッセージが宣言されていない識別子であることを述べているが...私はそれを修正するために行うには何が必要ですか? –

+0

あなたの.hのメッセージを宣言しました - 更新された質問を参照 –

+0

コードを実行すると、プログラムは1つの質問に対して機能しますが、クラッシュし、エラー "プログラム受信シグナル:" EXC_BAD_ACCESS "私はあなたのコードをコピーして貼り付けたので、正しくタイプされていることが分かりました。 –

1

は、プロジェクトのために次のマクロを定義します。

をmsgセクションaの

sがランダムインデックス、単純な呼び出しとして使用することができ

#define KAlert(TITLE,MSG) [[[[UIAlertView alloc] initWithTitle:(TITLE) 
      message:(MSG) 
     delegate:nil 
cancelButtonTitle:@"OK" 
otherButtonTitles:nil] autorelease] show] 

と配列してみてください:

KAlert(@"Title", @"Message"); 

or KAlert(@"Title",@"[youarray objectatindex:randindex]"); 
関連する問題