2013-12-20 74 views
-1

的UIImageView的訪問「名字」當我宣佈一個像這樣的:在我ViewController.h如何.m文件

我怎麼能那麼我ViewController.m訪問「名」 IBOutlet UIImageView *circle文件?

我需要這個「名稱」來確定我想顯示哪個圖像。

UIImageView *selected = (UIImageView *)[touch view]; 
selected.image = [UIImage imageNamed:@" circle goes here "]; 

代碼示例非常感謝:)提前致謝。

+1

夥計們,這不是詢問關於圖像文件名的問題的重複。海報希望找到指向圖像視圖的IBOutlet實例變量的名稱。爲此,您需要使用目標C運行時編寫一些自檢代碼。請投票重新提出問題,以便我可以提供問題的實際答案 –

回答

0
UIImage *myImage = [[UIImage alloc] init]; 

NSString *strProp = NSStringFromSelector(@selector(myImage)); 

NSLog(@"%@", strProp); 

輸出:

myImage 
+0

我不希望每個圖片都有if語句。我尋找更動態的解決方案:) – thar

0

而不是搜索名爲circle屬性,動態地,我會建議你設置一個唯一的tag恰當地circle的ImageView您,在您的viewDidLoad方法或從界面生成器,無論是適當的:

-(void)viewDidLoad { 
    //......... 
    circle.tag = 999; //or any other value that lets you determine it uniquely 
    //......... 
} 

然後任何在你的代碼中,你可以決定一個視圖是否circle的UIImageView僅通過驗證這樣的tag屬性:

UIImageView *selected = (UIImageView *)[touch view]; 
if(selected.tag == 999) { 
    selected.image = [UIImage imageNamed:@" circle goes here "]; 
} 
+0

嗨Ayan,謝謝你的回答。您不建議您動態獲取此屬性名稱(圓圈)的原因是什麼?這不可能嗎? – thar

+1

爲了從一個類動態地確定一個屬性,實際上你需要使用一個叫做「內省」的過程。爲此,您需要在代碼中使用「runtime.h」頭並在運行時通過'class_getProperty'函數反省一個類,以確定屬性(如果存在)。然而這對於運行時來說是一個很大的開銷,我不推薦它像你一樣嘗試執行一個簡單的任務。 –

-1

this SO question

該功能不是內置在UIImage因爲圖像不是始終從文件加載的 。但是,您可以創建一個自定義的子類以適應您的需求。

+0

你應該標記或關閉它作爲一個副本。現在,您的帖子與原始帖子相比沒有任何附加值。 –