2014-08-29 105 views
0

的子類工作時,此MyViewController.m的UIButton addTarget不UIViewController中

actionNames[0] = @"hoge"; 
actionNames[1] = @"piyo"; 

NSMutableArray *actionConts = [[NSMutableArray alloc] init]; 
for(int i=0; i<[actionNames count]; i++){ 
    UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom]; 
    [btn setFrame:CGRectMake(DEVICE_WIDTH/3 * i, 0, DEVICE_WIDTH/3, 45)]; 
    // actionNames is NSMutableArray 
    [btn setTitle:actionNames[i] forState:UIControlStateNormal]; 
    [btn setUserInteractionEnabled:YES]; 

    actionConts[i] = btn; 
} 

// ↓ does not work 
[actionConts[1] addTarget:self action:@selector(follow) forControlEvents:UIControlEventTouchUpInside]; 

// actionSubs is NSMutableArray 
for(int i=0; i<[actionConts count]/3; i++){ 
    actionSubs[i] = [[UIView alloc] initWithFrame:CGRectMake(0, 0, DEVICE_WIDTH, 45)];; 
} 
for(int i=0; i<[actionConts count]; i++){ 
    int sub = floor((float)i/3.0); 

    [actionSubs[sub] addSubview:actionConts[i]]; 

} 

UIScrollView *actionScr = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 150, 320, 45)]; 
[actionScr setPagingEnabled:YES]; 
[actionScr setShowsHorizontalScrollIndicator:NO]; 
[actionScr setBounces:NO]; 
actionScr.contentSize = CGSizeMake([actionSubs count] * DEVICE_WIDTH, 45); 
for(int i=0; i<[actionSubs count]; i++){ 
    [actionScr addSubview:actionSubs[i]]; 
} 
  1. 創建一個按鈕。 => actionConts [n]的
  2. addTarget到actionConts [1]
  3. actionSubs []的alloc
  4. addSubView actionConts [n]至actionSubs [n]的
  5. addSubView actionSubs [n]至actionScr
  6. (addSubView actionScr到DRW)
    (DRW是一個UIView實例 「IBOutlet中的UIView * DRW;」。)

當我點擊這個按鈕,它不工作...(';ω;`)

請幫幫我。 謝謝。

+0

這是因爲'[actionNames count]'爲零,因此您的for循環永遠不會運行 – 2014-08-29 14:03:23

+0

actionNames不是actionConts,因此您可以猜測其代碼爲空 – 2014-08-29 14:04:50

+0

您可以分享將按鈕添加到超級視圖的代碼嗎? – 2014-08-29 14:09:36

回答

0

你的代碼對我很好。我只更換了一些行:

[actionConts[1] addTarget:self action:@selector(follow) forControlEvents:UIControlEventTouchUpInside]; 

替換:

for (UIButton *button in actionConts) { 
    [button addTarget:self action:@selector(follow) forControlEvents:UIControlEventTouchUpInside]; 
} 

允許來自陣列加入行動每個按鈕。

另外我取代for循環條件由:

for(int i=0; i<[actionConts count]/3; i++) 

到:

for(int i=0; i<ceil((float)[actionConts count]/3.0); i++) 

,允許具有用於按鈕的至少一個上海華。

現在follow是一種方法,將觸發您的每個按鈕。您可以設置UIButton.tag屬性來明確哪一個被按下。

相關問題