2012-12-22 238 views
2

我有一個委託方法,它只是在那裏在輸入的數字的末尾放一個%符號。以另一種方法調用方法?

- (void)textFieldDidEndEditing:(UITextField *)UItextfield { 
    NSString *oldTextFieldValue = UItextfield.text; 
    UItextfield.text = [NSString stringWithFormat:@"%@ %%",oldTextFieldValue]; 
    } 

我能,而不是具有,有下列行爲

-(IBAction)Calculate:(UITextField *)UITextfield; 
{ 
    NSString *oldTextFieldValue = UItextfield.text; 
    UItextfield.text = [NSString stringWithFormat:@"%@ %%",oldTextFieldValue]; 
} 

然後在委託函數,調用行動?類似於

-(void)textFieldDidEndEditing:(UITextField *)UItextfield { 
[self Calculate:self] 
} 

我試過了,它不起作用。我知道它會讓我達到相同的結果,但我只想知道它是否可以完成。我想我問的方法(計算)可以調用另一種方法(textFieldDidEndEditing)以及如何。

+0

嘗試'[self Calculate:UItextfield];'。你發送一個'self',但是我沒有看到實現。 – Jones

回答

2

在大多數編程語言中調用方法中的其他方法始終發生。 這是一種很好的方式來分割代碼並在不同地方重複使用代碼,而無需複製/粘貼。

(這可能是你太簡單了。在這種情況下對不起)

事情可能會更容易,如果你使用標準的命名約定太明白。 (「likeThis」的變量和方法的名稱;「LikeThis」的類名)

- (void)textFieldDidEndEditing:(UITextField *)textField { 
    NSString *oldTextFieldValue = textField.text; 
    textField.text = [NSString stringWithFormat:@"%@ %%",oldTextFieldValue]; 
} 

textField這裏,是指針UITextField對象剛剛完成編輯。 你想傳遞這個對象到你的新'其他'方法。

[self calculate:textField]; 

self是一個指向當前類的實例的指針。例如,在名爲'MyViewController'的UIViewController子類中,self指的是此類的當前實例。 由於-calculate方法是一種實例方法(以' - '開頭),因此它需要您使用self。冒號後面傳遞變量textField

- (void)calculate: (UITextField*)textField { 
NSString *oldTextFieldValue = textField.text; 
textField.text = [NSString stringWithFormat:@"%@ %%",oldTextFieldValue]; 

}

使用,只有當你希望從在廈門國際銀行或情節串連圖板在UIComponent調用該方法的IBAction關鍵字。

+0

真棒,真的幫助我,感謝您花時間。 – user1923975

+0

不客氣! – SEG

4

您正在提供self作爲您所在類的實例的方法參數。在這種情況下,由於方法參數應該是UITextField的一個實例,因此這是錯誤的。在你的方法中試試[self Calculate:UItextfield]

+0

OK,完美的工作!謝謝 我有沒有機會獲得一點解釋,以幫助我理解?這是我的假設,請告訴我他們是否可以。 'self'指的是當前對象,在這種情況下是指正在編輯的文本字段。 Calculate是方法和UItextfield是需要傳遞的參數,在這種情況下,正在編輯? 此外,它會在將來有UITextfield作爲方法Calculate AND textFieldDidEndEditing方法的參數會導致任何問題? 謝謝 – user1923975

+0

self是該類的當前實例。所以調用[self Calculate:textfield]意味着當前實例應該向方法參數textField的方法Calculate發送消息。不應該有任何問題。如果它對你有幫助,你可以將我的答案標記爲已接受。 –