我有這個UITableView顯示圖像,從數據庫中下載,作爲矩陣:每個表格行中有4個圖像。選擇多個圖像
爲了能夠從視圖中選擇圖像,我使用了UITapGestureRecognizer。爲了使每個選擇獨一無二,我一直在試圖標記每個水龍頭識別器和每個imageView。這就是問題所在......
我已經在創建和標記imageViews和識別器的for循環中放置了一個日誌,並且我可以在輸出中看到它們通過所有值。但是,當我嘗試通過稍後按下圖像來獲取標籤時,我總是會得到「3」(表格行中的最後一個數字)。這讓我覺得即使我在每個循環中創建一個新的對象,標籤也是一樣的。無論是這個,還是我讀錯了方式。
切割出無關的部分。
for (NSInteger i = 0; i < 4; i++){
asyncImage = [[AsyncImageView alloc]
initWithFrame:frame];
[asyncImage loadImageFromURL:url];
asyncImage.tag = i;
NSLog(@"TAG %d", asyncImage.tag);
tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap)];
tapRecognizer.view.tag = i;
NSLog(@"TapTAG %d", asyncImage.tag);
[asyncImage addGestureRecognizer:tapRecognizer];
}
而且方法:
- (void)handleTap{
NSLog(@"TAP %d", self.tapRecognizer.view.tag);
}
如果你覺得我做的這一切完全錯誤的,在正確的方向輕推是隨時歡迎!
由於提前,湯姆
這不就是這行嗎? [asyncImage addGestureRecognizer:tapRecognizer]; asyncImage是一個UIImageView。 – Tom
@ user1534948是的,但是它太晚了:tapRecognizer.view.tag = i'的調用必須在後面,而不是在視圖設置之前。目前,在調用時'tapRecognizer.view'爲'nil',所以'setTag'消息被設置爲'nil',因此被忽略。 – dasblinkenlight
我剛試過。這是有道理的,你說的,但他們仍然都在返回3 ...我有一種感覺,問題可能是我如何返回變量。 handleTap方法返回實際的水龍頭,而不是最後創建的水龍頭? – Tom