2013-07-10 47 views
0

問題可能看起來很愚蠢,只是在客觀C的一些基礎知識中遇到問題。我知道客觀C只支持按值傳遞,但是我的需求需要傳遞地址。我有一個UIButton成員變量(伊娃),我傳遞這一個功能,並試圖初始化頁頭使用像下面的參數裏面的功能...如何將UIButton傳遞給一個函數並在那裏創建...?

函數調用:

[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]; 
} 

因此,如果不通過目標C中的引用,我該如何處理這種情況?

如果我理解錯了什麼,請糾正我。

注意:創建按鈕是一個通用的代碼,我一直在使用它來創建按鈕在運行時依賴於req。

感謝名單

+0

什麼是你上面的代碼的問題? – Venkat

回答

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]; 
    } 
+0

你確定它會編譯? – Newbee

+0

@Newbee你問過之前你試過了嗎? ;) 複製粘貼。它在我的測試中工作。 – geo

+0

我試過顯示錯誤,如「無法初始化類型autoreleasing *的參數與強..類似的東西」 – Newbee

0

我想你的代碼,它是工作對我罰款。只是你想念一件事。設置其框架。

下面是我如何修改你的代碼,併爲我工作的很好。希望它也能爲你工作。

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]; 
} 

工作正常

+0

我使用自動佈局功能..不需要設置框架..我以約束的方式處理它... – Newbee

0

試試這個....

- (void) create_button : (UIButton*) button 
{ 
    // Create button 
    UIButton *tmpButton = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
    tmpButton = button; 
    [self.add_scroll_view addSubview:tmpButton]; 
} 
+0

我不應該在函數內部使用tmpButton。 – Newbee

相關問題