-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の初心者です。このボタンが表示されなかったのはなぜですか? また、クリック後にボタンを非表示にするにはどうすればよいですか? フレームの内側にボタンが必要です。

4

3 に答える 3

2

簡単な削除self.myView.hidden = YES;

クリックリスナーを追加するには、2 つのソリューション:

あなたのviewDidLoadのコードで:

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

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

または、インターフェイス Builder (推奨) を介して、最も簡単な方法は、インターフェイス ファイルで IBAction 宣言を使用して、Xcode でハンドラー/アクションを実際に定義することです (@end ステートメントの直前に宣言を追加します)。次に、アクションをボタンにアタッチします

于 2013-08-07T12:53:08.927 に答える
0
  • 作成した testButton の代わりに self.testButton を追加しています。

    [self.myView addSubview:testButton];
    
  • プロパティに myView を割り当てていません。

    [self.view addSubview:myView]; self.myView = myView;
    
  • self.myView.hidden = YES を削除します。

別の注意: 通常、できるだけ早く super を呼び出す必要があります。そうしないと、スーパークラスが独自の実装に干渉する可能性があります。

于 2013-08-07T13:10:54.043 に答える
0

コードにいくつかの問題があります。

  1. testButtonにサブビューとして追加しself.myViewます。次に、非表示にしself.myViewます。その結果、self.myviewそのサブビューも表示されなくなります。
  2. ローカル変数とインスタンス変数と混同されます。どうやらインスタンス変数とプロパティがありますmyView。それ以外の場合は使用できませんself.myViewmyViewそして、インスタンス変数とは異なるローカル変数を宣言します。これで全然OKなのかもしれません。でも、あなたが故意にやったわけではないというガッツを感じました。self.myViewサブビューを追加した時点では、あなたはおそらく nil かもしれません。サブビューでさえ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; 
于 2013-08-07T13:11:10.253 に答える