2012-07-11 20 views
0
指向一個對象

我的問題是一種普遍;在項目中,我有10個UIButton對象 名爲Button1,Button2的,將Button3,將Button4,Button5,Button6,Button7,按鈕8,按鈕9,和Button10如何從字符串

我也有UIImageview被命名完全一樣的按鈕,從1到10。

我想寫將由按鈕的最後一個字符(總是從1到10的數字)來處理圖像,並會影響UIImageview以同樣的方式

像這樣的事情

buttonlastcharacter = i; 
    if(sender.lastcharacternumber is:i){ 
    Button%,i.frame = //Some manipulation 
代碼

但基本上所有我想要的是通過字符串訪問某個對象

我該如何實現這樣的行爲?

回答

1

這也許不是你的情況的理想解決方案,但你可以做到這一點不同的方法:使用

志願

UIButton* myButton = [self valueForKey:[NSString stringWithFormat:@"button%i",i]]; 

或與選擇器和屬性

UIButton* myButton = [self performSelector:NSSelectorFromString([NSString stringWithFormat:@"button%i",i])]; 
1

你可以像這樣做, 在你IBAction爲方法:

- (IBAction)click:(id)sender 
{ 
UIButton *but = (UIButton *)sender; 
but.frame = your manipulation code; 
} 

,或者你能確認是這樣的:

if([but.currentTitle isEqualToString:@"Button1]) 
{ 
//Manipulate button 1 
} 

如果您已經添加標籤的按鈕,從1- 10你可以使用,

if(but.tag == 2) 
{ 
    //Manipulate button 2 
} 
2

有幾個更好的方法來做到這一點。如果這些按鈕都是靜態的,IB,你可以使用IBCollection陣列圖像視圖和按鈕簡單地通過匹配指標叫起來。

更好的只是使用的按鈕或圖像視圖中的變量值。

1

嗯,你可以使用你的按鈕,爲您的UIImageView對象的數組和標籤。他們都從UIView的,它爲您提供了一個.TAG propterty繼承。它是NSInteger *類型。

爲了方便的原因,我會建議命名按鈕,從0到9這並不重要,但在數組中的第一個指數是0,因此它們命名相應的只是使事情變得更容易。

定義

NSArray *buttonArray; 

您可以選擇的NSMutableArray取決於你可能想用它做什麼。

在viewDidLoad中代碼:

buttonArray = [NSArray arrayWithCapacity:10]; 
buttonArray[0] = button0; 
.. 
buttonArray[9] = button9; 

在Interface Builder你XIB文件,或者等。無論您可以編程方式創建UIImages,添加相應的標籤。

image0.tag = 0; 
... 
image0.tag = 9; 

假設你將它們命名爲image0到image9。

在您採取適當的行動方法代碼:

buttonArray[sender.tag] = someManipulation;