0

私はiPadアプリケーションを開発しており、popoverviewControllerにUItableViewが必要です.2日以来、これに苦労しています.popoverviewControllerを取得していますが、その中にUItableViewを取得できません.また、ポップオーバーの周りに多くの影が見えます.画面上のどこでもワンクリックでポップオーバーを閉じることができました。

-(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];
  }      
4

2 に答える 2

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];

テーブルビューをポップオーバーに表示するには、この実装を確認してください。

PS: 問題をよりよく確認するために必要な実装について言及してください。

ありがとう。

于 2013-02-26T11:36:47.257 に答える
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 を使用しない場合は、必要に応じてオブジェクトを解放します。それ以外の場合は使用しないでください。

于 2013-02-26T11:55:29.523 に答える