2012-08-28 71 views
1

實際上,我一直在環顧四處調用塊的方法。 我試圖從iPhone照片應用程序。在這裏獲取所有圖像是代碼....IOS:從塊調用方法

void (^assetGroupEnumerator)(ALAssetsGroup *, BOOL *) = ^(ALAssetsGroup *group, BOOL *stop) 
    if(group != nil) { 
     [self.groups addObject:group]; 
     [group enumerateAssetsUsingBlock:selectionBlock]; 
    } 
}; 

[library enumerateGroupsWithTypes:groupTypes 
        usingBlock:assetGroupEnumerator 
       failureBlock:^(NSError *error) {NSLog(@"A problem occurred");}]; 

在selectionBlock ...我只是想添加任何圖像上的動作時,用戶點擊。 所以我想這個代碼..

[imgView addTarget:self action:@selector(buttonPressed) forControlEvents:UIControlEventTouchUpInside]; 

buttonPressed也是在同一個.m文件定義。

- (void) buttonPressed: (id) sender { 
UIAlertView* av = [[UIAlertView alloc] initWithTitle:@"Howdy!" 
              message:@"You tapped me." 
              delegate:nil 
            cancelButtonTitle:@"Cool" 
            otherButtonTitles:nil]; 
[av show]; 
} 

但selectionBlock我正在 「爲 '的UIImageView' 不可見@interface聲明選擇 'addTarget:動作:forControlEvents'」

我是新來的iOS編程。所以任何幫助將非常非常感激!

回答

3

-addTarget:action:forControlEvents:UIControl上的方法。 UIButtonUISwitch等都是UIControl的所有子類。然而,UIImageView不是,所以它不響應該選擇器。由於您的imgView變量是UIImageView,因此編譯器不會讓您調用此方法。這與從塊中調用它沒有任何關係,順便說一句 - 但僅限於對象聲明他們響應的方法。

希望這會有所幫助!

+0

那麼我現在應該怎麼做? ...我應該把這個imgView放在UIButton中,然後添加這個動作?我只想讓這些imgView可點擊,以便我可以在buttonPressed方法中獲得它的url。 – Niks

+0

我會做的是拿你的按鈕,並調用'setImage:forState:'或'setBackgroundImage:forState:'並傳遞'UIImage'參數您在圖像視圖中顯示的圖像。 –

+0

謝謝@Carl Veazey它的工作... – Niks

0

變化:

[imgView addTarget:self action:@selector(buttonPressed) forControlEvents:UIControlEventTouchUpInside]; 

到:

[imgView addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside]; 

(用冒號 「:」 字符)

因爲buttonPressed有一個參數。

+0

是的 - 按鈕壓縮:有一個參數,但UIImageView仍然沒有實現目標行動範例,所以這不是一個答案。 –