尝试创建处理多个对象类型的参数的方法时生成错误

时间:2013-04-11 21:37:33

标签: ios objective-c

我有这个实例方法,我试图概括最后一个语句来处理多个对象类:

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

我不知道目标对象在运行时是什么类。这是进行检查的代码(第二个语句导致构建错误):

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

这是构建错误:

  

在'__strong id'

类型的对象上找不到属性'frame'

为什么呢?我有一个强制转换为正确的类,所有目标都有实际的“框架”(UITableView,UITextField和UITextView)。

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分: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,宽度,高度)