簡體   English   中英

UIButton addTarget在UIViewController的子類中不起作用

[英]UIButton addTarget does not work in subclass of UIViewController

這是MyViewController.m

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 []分配
  4. addSubView actionConts [n]到actionSubs [n]
  5. addSubView actionSubs [n]到actionScr
  6. (將addSubView actionScr添加到drw)
    (drw是一個UIView實例。“ IBOutlet UIView * drw;”)

當我單擊此按鈕時,它不起作用...(´;ω;`)

請幫我。 謝謝。

您的代碼對我來說很好。 我只替換了一些行:

[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屬性來闡明按下哪一個。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM