2013-08-07 71 views
-6
- (void)viewDidLoad{ 
    int leftBorder = 80; 
    int topBorder = 160; 
    int width = 150; 
    int height = 50; 
    UIView *myView = [[UIView alloc] initWithFrame:CGRectMake(leftBorder, topBorder, width, height)]; 
    myView.layer.cornerRadius = 5; 
    myView.backgroundColor = [UIColor redColor]; 
    [self.view addSubview:myView]; 

    UIButton *testButton = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
    testButton.frame = CGRectMake(0, 0, 50, 50); 
    [testButton setTitle:@"testButton" forState:UIControlStateNormal]; 
    [testButton addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside]; 
    [self.myView addSubview:self.testButton]; 

    self.myView.hidden = YES; 

    [super viewDidLoad]; 
} 

嗨,對不起,愚蠢的問題!我是xcode中的newby。爲什麼我沒有看到這個按鈕?如何在點擊後隱藏按鈕?我需要框架內的按鈕。看不到按鈕

+3

你加入你的按鈕'myView'然後躲在'myView'這包含它內的按鈕。 –

+0

你不會看到它,因爲你隱藏了視圖:self.myView.hidden = YES; – tadasz

+0

另一種評論:你使用'int'來構造'CGRect',你應該使用'CGFloat'來代替。 – Pascal

回答

2

簡單刪除self.myView.hidden = YES;

要添加點擊監聽器,兩個解析:

通過代碼在您的viewDidLoad中:

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    [mybutton addTarget:self action:@selector(myButtonClick:) forControlEvents:(UIControlEvents)UIControlEventTouchDown]; 
} 

- (void)myButtonClick:(id)sender { 
    myButton.hidden = YES; 
} 

或通過接口生成器(首選),最簡單的方法是實際上在接口文件中使用IBAction聲明在Xcode中定義處理程序/操作(在@end語句之前添加聲明)。然後附加動作到按鈕

+0

這是對的,但它本身無濟於事。他仍然與伊娃和當地人混在一起。 –

+0

爲什麼這個答案未被接受? – Gomino

+0

@gomino對不起,我是新的stackoverflow。謝謝你的回答。 – user2652489

0
  • 您正在添加self.testButton而不是創建的testButton。

    [self.myView addSubview:testButton]; 
    
  • 您沒有將myView分配給您的財產。

    [self.view addSubview:myView]; self.myView = myView; 
    
  • remove self.myView.hidden = YES;

另一種說法: 您應該儘可能早地打電話給super。否則,超類可能會干擾你自己的實現。

0

你的代碼有幾個問題。

  1. 您將testButton作爲子視圖添加到self.myView。然後你隱藏self.myView。因此,self.myview及其子視圖都不可見。
  2. 您會對本地變量和實例變量感到困惑。顯然有一個實例變量和屬性myView。否則,你不會使用self.myView。你聲明一個局部變量myView,它與實例變量不一樣。這很可能是完美的。但我有一種膽量,覺得你沒有故意這樣做。在添加子視圖的時候,您的self.myView可能沒有。甚至子視圖self.testButton可能爲零。這將編譯文件並執行正常,但實際上並沒有發生任何事情。
  3. 與testButton相同。

我建議修改代碼了一下,假設有針對相應類型的MyView的和testButton屬性:

self.myView = [[UIView alloc] initWithFrame:CGRectMake(leftBorder, topBorder, width, height)]; 
self.myView.layer.cornerRadius = 5; 
self.myView.backgroundColor = [UIColor redColor]; 
[self.view addSubview:self.myView]; 

self.testButton = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
self.testButton.frame = CGRectMake(0, 0, 50, 50); 
[self.testButton setTitle:@"testButton" forState:UIControlStateNormal]; 
[self.testButton addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside]; 
[self.myView addSubview:self.testButton]; 

self.myView.hidden = NO;