2013-04-11 47 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