2013-04-11 57 views
-1

我有這樣的實例方法在那裏我想概括的最後一條語句來處理多個對象類的參數的方法:生成錯誤試圖創建來處理多個對象類型

-(void)showHTMLHelp:(NSString *)htmlString pointTo:(id)target background:(UIColor *)bgColor 

,我不知道目標對象是什麼類,直到運行時。這是代碼做檢查(第2語句導致生成錯誤):

if([target isKindOfClass: [UITextField class]]) 
    [popoverController presentPopoverFromRect:(UITextField)&target.frame inView:self.view 
        permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES]; 

這是生成錯誤:

Property 'frame' not found on object of type '__strong id'

爲什麼?我有一個轉換到正確的類,所有的目標都有實際的「框架」(UITableView,UITextField和UITextView)。

回答

1
if([target isKindOfClass: [UITextField class]]) 
    [popoverController presentPopoverFromRect:((UITextField *)target).frame inView:self.view 
        permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES]; 
+0

就是這樣......非常感謝你;我很感激。 – SpokaneDude 2013-04-11 22:04:18

+0

不客氣:) – Tobi 2013-04-11 22:05:01

0

如果您的目標沒有實際的框架(原點x,原點y,寬度,高度),則無法呈現PopoverFromRect,因爲它不知道從哪裏彈出。 嘗試

if([target isKindOfClass: [UITextField class]]) 
[popoverController presentPopoverFromRect::CGRectMake(0, 0, 100, 100) inView:self.view 
       permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES]; 

如果您CGRectMake是你(原點X,產地Y,寬,高)

+0

這將無法工作,因爲 「目標」 是其中酥料餅的箭頭指向...所有的目標都有實際的「框架」(UITableView,UITYextyField和UITextView)。 – SpokaneDude 2013-04-11 21:59:48