0

質問はとてもばかげているように見えるかもしれません.Objective Cのいくつかの基本に問題があるだけです.Objective Cは値渡しのみをサポートしていることを認識していますが、私の要件はアドレスを渡す必要があります. UIButton メンバー変数 (iVar) があり、これらを関数に渡し、以下のようなパラメーターを使用して関数内で init を割り当てようとしています...

関数呼び出し:

[self create_button : ivar_btn];

意味:

- (void) create_button : (UIButton*) button
{
    // Create button
    button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    [button setTitle:@"00/00/0000" forState:UIControlStateNormal];
    [self.add_scroll_view addSubview:button];
}

では、Objective C で参照渡しを使用しない場合、このケースをどのように処理すればよいでしょうか?

何か間違ったことを理解した場合は、修正してください。

注: ボタンの作成は一般的なコードです。これを使用して、実行時に要件に応じてボタンを作成しています。

ありがとう

4

3 に答える 3

2

これは役に立たない実装であり、試したことはありませんが、まだです。

UIButton *ivar_btn = nil;   
    [self create_button : &ivar_btn];
- (void) create_button : (UIButton**) button
    {
        // Create button
        *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
        [*button setTitle:@"00/00/0000" forState:UIControlStateNormal];
        [self.add_scroll_view addSubview:*button];
    }
于 2013-07-10T07:23:23.303 に答える
0

私はあなたのコードを試しましたが、私にとってはうまくいきます。1つだけ欠けています。そのフレームを設定します。

これが私があなたのコードを修正する方法であり、私にとってはうまく機能します。それがあなたにとってもうまくいくことを願っています。

UIButton *btn = [[UIButton alloc] init];
[self create_button:btn];

および関数/メソッド:

- (void) create_button : (UIButton*) button
{
    // Create button
    button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    [button setTitle:@"00/00/0000" forState:UIControlStateNormal];
    [button setFrame:CGRectMake(0, 0, 100,100)];
    [self.view addSubview:button];
}

正常に動作します

于 2013-07-10T07:21:13.063 に答える
0

これを試して....

- (void) create_button : (UIButton*) button
{
    // Create button
    UIButton *tmpButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    tmpButton = button;
    [self.add_scroll_view addSubview:tmpButton];
}
于 2013-07-10T07:32:46.213 に答える