2012-01-03 13 views
0

私はタイムスロット画面を含むアプリケーションを作成しています。この画面には、半時間単位のボタンのリストが表示されます。私は私が作成したイメージリストのアレイを使用して、各ボタンの画像を設定し、このスクロールビューのボタン配列にイベントを追加する

UIButton *csBut = [[UIButton alloc]init]; 
    csBut = [UIButton buttonWithType:UIButtonTypeCustom]; 
    csBut.frame = CGRectMake(xPos, yPos, 145, 55); 

    [csBut setImage:[imageList objectAtIndex:i] forState:UIControlStateNormal]; 

    [SV addSubview:csBut]; 

様ループのため作成することにより、ボタンを作成し6

- 私は、タイムスロット9から行く有します。 SVは私が設定したスクロールビューです。各ボタンはこのスクロールビューに追加されます。ボタンはすべて完全に表示されています。今私が抱えている問題は、何かをするためにボタンを設定しようとすると、そのボタンがクリックに反応しないことです。 I私がクリックしたときに、しかし

-(IBAction)buttonClicked:(id)sender{ 
//ConfirmBut.hidden = NO; 

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Warning" message:@"Testing" 
               delegate:self cancelButtonTitle:@"Okay" otherButtonTitles: nil]; 
[alert show]; 

}

[csBut addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside]; 

を使用していると(私はこの正常に動作し得るまでちょうどTEMP)私が作成したメソッドは、単純に警告が表示されるはずですボタンを押すと、何も起こりません。誰かが私が間違っていることを教えてもらえますか?

ご協力いただきありがとうございます。

+0

ボタンを作成している場所でコード全体を投稿できますか? – Zoleas

+0

'UITableView'の使用を検討し、ユーザーが行を選択したときを検出することで、必要な動作をトリガーしてください。はるかに見栄えが良くなり、実装しようとしているカスタムソリューションよりも柔軟性が高く、管理が容易になります。 – jlehr

+0

私がテーブルビューで持っている問題は、背景が純粋な白であることです。私は、表示されているアプリケーション全体に背景テーマを持っています。私はどのように正確にまだテーブルビューに背景を設定するか分からない – AdamM

答えて

1

UIScrollViewはタッチイベントに直接応答しませんので、forループにUIViewを割り当て、ボタンをそのビューに以下のように追加するだけです。問題は解決される可能性があります。コーディングを続けてください。

UIView *myView = [[UIView alloc] initWithFrame:CGRectMake(xPos, yPos, 145, 55);] 
    UIButton *csBut = [[UIButton alloc]init]; 
     csBut = [UIButton buttonWithType:UIButtonTypeCustom]; 
     csBut.frame = CGRectMake(0, 0, 145, 55); 

     [csBut setImage:[imageList objectAtIndex:i] forState:UIControlStateNormal]; 

     [myView addSubview:csBut]; 
[SV addSubview:myView] 
+0

ありがとう、それは完璧に働いた! – AdamM

1

UIButtonはUIViewのサブクラスなので、タグもあります。たとえば、カスタムactionSheetを作成し、UIButtonsのリストを含んでいます。私がUIButtonを押し下げると、押されたボタンを知る必要があります。だから、私はタグに行情報を割り当てます。私は、ボタンをタッチすると

NSArray *buttonListArray = ....; ///< UIButton array, a button per row. 
for (int tag_id = 0; tag_id < [buttonListArray count]; ++tag_id) { 
UIButton * csBut = [buttonListArray objectAtIndex:tag_id]; 
csBut.tag = (100 + tag_id); 
} 

、私たちは、ボタンの配列を扱う場合はタグ付けが必須です

- (void)buttonTouched:(id)sender { 
    UIButton * csBut = (UIButton *)sender; 
    NSInteger tag_id = (csBut.tag - 100); 
} 

によって行情報を得ることができます。私はあなたの最後のボタンが多分ボタンクリックの残りの部分に対する応答がお互いに乗っていると考えています

+0

本当に助けてくれてありがとうございました。それがどのように機能するかを理解するために私に少し混乱させましたが、これは私が必要とする次の機能を作成するために必要なものです。乾杯!!!! – AdamM

関連する問題