我正在开发一个ipad应用程序,我需要在popoverviewController中使用UItableView。自从两天以来我为此苦苦挣扎。我得到popoverviewController但无法在其中获取UItableView。而且我还能看到很多阴影popover,我可以在屏幕上的任何位置点击一下popover。
-(IBAction)btnClick
{
if([array count]!=0)
{
UIViewController* popoverviewContent = [[UIViewController alloc] init]; //ViewController
if(autocompleteTableView)
[autocompleteTableView removeFromSuperview];
autocompleteTableView = [[UITableView alloc] initWithFrame:CGRectMake(0,0,270,250) style:UITableViewStyleGrouped];
autocompleteTableView.delegate = self;
autocompleteTableView.dataSource = self;
autocompleteTableView.scrollEnabled = YES;
autocompleteTableView.backgroundColor = [UIColor lightTextColor];
autocompleteTableView.backgroundView = nil;
autocompleteTableView.backgroundColor = [UIColor whiteColor];
autocompleteTableView.separatorStyle = UITableViewCellSeparatorStyleNone;
[autocompleteTableView setSeparatorColor:[UIColor orangeColor]];
popoverviewContent.view = autocompleteTableView;
UIPopoverController *popoverController = [[UIPopoverController alloc] initWithContentViewController:popoverviewContent];
popoverController.delegate=self;
[popoverviewContent release];
[popoverController setPopoverContentSize:CGSizeMake(320, 264) animated:NO];
[popoverController presentPopoverFromRect:CGRectMake(410, 120,270, 250)inView:testscroll permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];
[autocompleteUrls removeAllObjects];
for(int i=0;i<[array count];i++)
{
NSString *curString = [[array objectAtIndex:i] valueForKey:@"FName"];
[autocompleteUrls addObject:curString];
}
}
[autocompleteTableView reloadData];
}
答案 0 :(得分:0)
UITableViewController * tableViewController = [[UITableViewController alloc] init];
UIPopoverController *popover = [[UIPopoverController alloc]initWithContentViewController: tableViewController];
[popover setDelegate:self];
self.popoverViewController = popover;
CGRect buttonFrame = [someButton frame];
[popover setPopoverContentSize:CGSizeMake(300, 260)];
[popover presentPopoverFromRect: buttonFrame inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
检查此实现以在弹出窗口中显示tableview。
PS:提及所需的实施方案以更好地检查您的问题。
感谢。
答案 1 :(得分:0)
我认为您的实施并未如此优化。所以让我优化它。它会解决你的问题。
if(!popoverviewController)
{
//Always best is to implement TableviewController than creating tableview and adding it to UIViewController
tableViewController = [[UITableViewController alloc]init];
//Should set contentsize of the presenting viewcontroller before adding to popovercontroller
[tableViewController setPopoverContentSize:CGSizeMake(320, 264) animated:NO];
Assign yout Tableview propertis here
//Set the TableViewCOntroller object and PopOvercontroller object globally.
popoverviewController = [[UIPopoverController alloc]initWithContentViewController: tableViewController];
//Assign some properties of popover Controller here
}
//This will always execute so you should dat actions and present the viewController
for(int i=0;i<[array count];i++)
{
NSString *curString = [[array objectAtIndex:i] valueForKey:@"FName"];
[autocompleteUrls addObject:curString];
}
[autocompleteTableView reloadData];
[popoverviewController presentPopoverFromRect: buttonFrame inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
注意:
请勿删除您的观点并添加
始终重复使用PopoverControllers的视图
如果您不使用ARC,则在必要时释放对象,否则不要