我有这个实例方法,我试图概括最后一个语句来处理多个对象类:
-(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)。
答案 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,宽度,高度)