2012-02-04 62 views
0

我知道這裏有一些問題非常類似,但我找不到所需的信息。我在for循環中添加了一個UIButton的網格到我的視圖。每次創建新按鈕時,我都會撥打addTarget:self action:@selector(doYourThing:) forControlEvent:UIControlEventTouchUpInside。如果我只製作一個按鈕,它就會起作用。但是當我使用for循環創建一個完整的按鈕網格時,沒有一個按鈕想要調用選擇器,而是獲得EXC_BAD_ACCESS。有什麼建議麼?感謝大家。從多個UIButtons調用一個選擇器

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    [titleLabel setText:[site title]]; 
    // Do any additional setup after loading the view from its nib. 
    buttonArray = [[NSMutableArray alloc] initWithCapacity:250]; 
    int i = 0; 
    int c = 0; 
    int index = 0; 
    for (c=0; c < [site columnCount]; c++) { 
    for (i = 0; i < [site rowCount]; i++) { 
     plotButton = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
     [plotButton addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside]; 
     CGPoint origin = CGPointMake(60.0, 40.0); 
     [plotButton setTitle:@"Plot" forState:UIControlStateNormal]; 
     [plotButton setFrame:CGRectMake(origin.x + (90.0 * c), origin.y + (45.0 * i), 90.0, 45.0)]; 
     [plotButton setTag:index]; 
     [buttonArray insertObject:plotButton atIndex:index]; 
     NSLog(@"%d", [plotButton tag]); 
     index ++; 
     [[self view] addSubview:plotButton]; 

     } 
    } 
} 

這是我的for循環。 idk如果像這樣嵌套他們是愚蠢的,但我正在做一個按鈕的網格,這似乎是明智的方式來獲取行和列完成。無論如何,謝謝。

增加了異常斷點。得到:Catchpoint 2(拋出)Pending breakpoint 1 - 「objc_exception_throw」已解決。

+3

您可能在構建按鈕的循環中出現了一些錯誤(因爲從幾個按鈕調用同一個選擇器是完全正確的)。請發佈相應的代碼。 – DarkDust 2012-02-04 20:19:57

+1

你需要[添加一個異常斷點](http://stackoverflow.com/questions/4961770/run-stop-on-objective-c-exception-in-xcode-4)。然後觸發錯誤,複製異常的堆棧跟蹤,編輯您的問題,並粘貼堆棧跟蹤。 – 2012-02-04 20:29:56

+0

你是釋放還是無法使用buttonArray而不是dealloc? – vikingosegundo 2012-02-04 20:42:24

回答

2

當我使用整數替換[site columnCount]和[site rowCount]時,您的代碼正常工作。我的猜測是你在這兩種方法中有一個出現問題。

+0

是的,謝謝。非常感謝。 – geraldWilliam 2012-02-04 20:55:27

+1

@geraldWilliam:如果喬治的回答是你需要的,那麼你應該接受它。 – 2012-02-04 22:56:30

0

我想你叫[UIButon buttonWithType:...]構造函數,然後你釋放按鈕... 但我只是猜測。爲了確保你應該在這裏寫代碼。

見你!