2012-01-03 74 views
0

我正在創建一個包含時間段屏幕的應用程序,其中用戶在半個小時的時間段內顯示按鈕列表。 I I有時隙從9去 - 6.將事件添加到滾動視圖中的按鈕陣列

我通過創建一個for循環這樣

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]; 

餘設置的每個按鈕的圖像使用I所創建的圖像列表創建陣列的按鈕。 SV是我設置的滾動視圖。每個按鈕都添加到此滾動視圖中。按鈕都完美顯示。現在我遇到的問題是,當我嘗試設置按鈕執行某些操作時,它不響應按鈕點擊。我一直在使用

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

,我已經創建的方法應該簡單地顯示警報(只是臨時直到我得到這個工作正常)

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

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

}

然而,當我點擊按鈕,沒有任何反應。誰能告訴我我做錯了什麼?

在此先感謝您的幫助。

+0

你可以發佈你創建按鈕的整個代碼嗎? – Zoleas 2012-01-03 12:21:35

+0

考慮使用'UITableView'並通過檢測用戶何時選擇行來觸發所需的行爲。它看起來會更好,它的行爲將比您要實現的自定義解決方案更靈活,更易於管理。 – jlehr 2012-01-03 12:25:26

+0

我唯一遇到的問題是背景是純白色的,我在整個應用程序中都顯示了背景主題。我不知道如何將背景設置爲tableview – AdamM 2012-01-03 13:00:47

回答

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 2012-01-03 12:59:26

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 2012-01-03 14:20:27

相關問題