我有一个情况请帮助我,
1)我有一个包含自定义单元格的表 2)每个单元格有2个搜索栏和2个标签。
我尝试的是假设用户开始编辑searchBar,弹出框应该出现指向该搜索栏。
我已经实现了这个但是弹出窗口没有出现在所需的searchBar上,而且popover的高度有时也太长了
if (searchBar.tag==10) {
NSLog(@"Display date popover");
CGRect pickerFrame = CGRectMake(0,0,300,200);
UIViewController *tempDateViewController=[[UIViewController alloc] init];
UIDatePicker *datePicker = [[UIDatePicker alloc] initWithFrame:pickerFrame];
[datePicker addTarget:self action:@selector(pickerChanged:) forControlEvents:UIControlEventValueChanged];
[tempDateViewController.view addSubview:datePicker];
if(!currentPopover)
{
currentPopover=[[UIPopoverController alloc] initWithContentViewController:tempDateViewController];
}
else {
[currentPopover setContentViewController:tempDateViewController animated:YES];
}
tempDateViewController.contentSizeForViewInPopover=CGSizeMake(320, 300);
[datePicker release];
[tempDateViewController release];
[currentPopover presentPopoverFromRect:searchBar.frame inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
}
请帮我解决这个问题。 提前完成。
答案 0 :(得分:3)
searchBar位于表格视图中的单元格内(根据您的布局,可能位于其他视图中)。最有可能的问题是self.view不是您调用它的searchBar的直接父级。因此,在self.view中使用searchBar的框架会产生意想不到的结果。
不是使用self.view并试图找出searchBar相对于哪个,你可以使用searchBar本身作为“inView”,而使用“rect”,使用searchBar的边界:
[currentPopover presentPopoverFromRect:searchBar.bounds inView:searchBar
permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
接下来,要修复popover的高度,请尝试设置popover的popoverContentSize 而不是视图控制器的contentSizeForViewInPopover:
//tempDateViewController.contentSizeForViewInPopover=CGSizeMake(320, 300);
currentPopover.popoverContentSize = CGSizeMake(320, 300);
最后,一个单独的问题但是,datepicker的最小高度应该是216,而不是200:
CGRect pickerFrame = CGRectMake(0,0,300,216);