2013-05-22 45 views
-1

我在for循環中手動添加了按鈕,之後,如何隱藏或更改按鈕並隱藏標籤?在Cocoa Touch中手動添加按鈕後如何隱藏按鈕?

UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
button.frame = CGRectMake(80.0, 170, 150.0, 30.0); 
[button setTitle:@"My Button" forState:UIControlStateNormal]; 
[button addTarget:self action:@selector(myAction:) forControlEvents:UIControlEventTouchUpInside]; 
[self.view addSubview:button]; 

UILabel *lblFileName = [[UILabel alloc] init]; 
lblFileName.text = [[objectArray objectAtIndex:i] valueForKey:@"fileName"]; 
lblFileName.textAlignment = NSTextAlignmentCenter; 
[self.view addSubview:lblFileName]; 

-(IBAction)myAction:(id)sender 
{ 
    // hide the button or change title button and hide label 
} 
+0

您想隱藏與特定按鈕相關的所有標籤或標籤。 – Girish

+0

與特定按鈕相關的標籤 –

+0

請試用我更新的答案。 – Girish

回答

2

如果您在for loop中添加buttons & labels,請嘗試以下解決方案。

button.tag = i + 1;//0 is default tag for all views. 
lblFileName.tag = i + 1; 

-(IBAction)myAction:(id)sender 
{ 
    UIButton *btn= (UIButton *)sender; 
    [btn setHidden:YES];// hide the button 
    btn.titleLabel.text = [[objectArray objectAtIndex:[sender tag]] valueForKey:@"fileName"]; 

    //Get the label of selected button using button tag. 
    [[self.view viewWithTag:[sender tag]] setHidden:YES]; 

} 
+0

thx你。如果標籤,然後點擊按鈕後如何改變它。 UILabel * lblFileName = [[UILabel alloc] init]; lblFileName.text = [[objectArray objectAtIndex:i] valueForKey:@「fileName」]; lblFileName.textAlignment = NSTextAlignmentCenter; –

+0

你可以編輯你的答案 –

+0

@JackyTeh檢查我的更新答案。 – Girish

0
-(IBAction)myAction:(id)sender 
{ 
    // hide the button or change title button 
[button setHidden:YES]; 
} 
0

在myAction:(id)的發件人發送者是你的按鈕。

- (IBAction)myAction:(id)sender { 
     [sender setHidden:YES]; 
} 

但是在這種情況下,您不能再次使按鈕可見,因爲您沒有參考它。我認爲最好爲按鈕創建一個屬性。

0
-(IBAction)btn:(id)sender 
{ 

    btn.hidden=YES; 
} 

試試這個。

0

其他回答者已經顯示了sender是你想要的按鈕的方式,如果你想用另一種方法訪問按鈕(例如,如果你想讓它再次可見),你將需要創建一個屬性創建按鈕的對象。

要做到這一點,把這個在您的@interface類:

@property (strong) UIButton *myButton; 

而且@synthesize它在你的@implementation

@implementation WhateverClass 
@synthesize myButton = _myButton; 

然後您可以將屬性設置爲自定義按鈕:

self.myButton = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
self.myButton.frame = CGRectMake(80.0, 170, 150.0, 30.0); 
[self.myButton setTitle:@"My Button" forState:UIControlStateNormal]; 
[self.myButton addTarget:self action:@selector(myAction:) forControlEvents:UIControlEventTouchUpInside]; 
[self.view addSubview:self.myButton]; 

並在任何地方訪問它(在它之後已創建),像這樣:

-(IBAction)myAction:(id)sender 
{ 
    [self.myButton setTitle:@"Pressed!" forState:UIControlStateNormal]; 
    [self.myButton setHidden:YES]; 
} 
+0

不能這樣,我的代碼是在for循環,如果100,如何創建100按鈕 –

+0

好吧,這可能是你應該在問題中說明的東西。如果這就是你在做什麼,@ Girish的回答可能效果最好。 –

0

給唯一的標籤爲每個按鈕和標籤一樣吉里什said.No兩個標籤不應該是一樣的。

考慮你有10個按鈕和10個標籤。然後給1到10按鈕的標籤和11到20的標籤。

然後在你的方法,你可以使用相應的標籤訪問任何標籤或按鈕。

UIButton *button=(UIButton *)[self.view viewWithTag:1]; 
UILabel *label=(UILabel *)[self.view viewWithTag:11];