1

ビューコントローラーに UIPopover Controller を作成しました。これにより、アイテムのリストを含むポップアップが開きます。リスト内のアイテムを選択すると、メインビューのラベルが更新されてこの選択が表示されるようにしたいのです。これまでに以下のコードを使用してみましたが、リストの項目をクリックすると次のエラーが表示されます:

UIPopOverController に使用したコードを以下に示します。

-(IBAction) portFoliosButtonPress:(id)送信者 {

if (self.portfolioPopoverController == nil) {
    ASHPortfolioViewController *portfoliosTableViewController = [[ASHPortfolioViewController alloc] initWithStyle:UITableViewStylePlain];
    //CGSize frame = {portfoliosTableViewController.view.frame.size.width, 200.0};
    UIPopoverController *popover = [[UIPopoverController alloc] initWithContentViewController:portfoliosTableViewController]; 
     CGSize frame = {300.0, 230.0};
    [popover setPopoverContentSize:frame];
    popover.delegate = self;

    self.portfolioPopoverController = popover;
    //self.contentSizeForViewInPopover.height = CGSizeMake(150.0, 140.0);
}

if ([self.portfolioPopoverController isPopoverVisible]) {
    [self.portfolioPopoverController dismissPopoverAnimated:YES];    
}
else {
    [self.portfolioPopoverController presentPopoverFromBarButtonItem:sender 
                                            permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
}
self.portfolioLabel.text = @"hi";

}
#pragma mark - Popover lifecycle

//---called when the user clicks outside the popover view---
- (BOOL)popoverControllerShouldDismissPopover:(UIPopoverController *)popoverController {

NSLog(@"popover about to be dismissed");
return YES;
}

//---called when the popover view is dismissed---
- (void)popoverControllerDidDismissPopover:
(UIPopoverController *)popoverController {

    NSLog(@"popover dismissed");    
}

ポップオーバー コントローラーに含まれる UITableView で使用されるコードを以下に示します。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath   *)indexPath
{

    ASHFirstViewController *appDelegate =(ASHFirstViewController *)[[UIApplication sharedApplication] delegate];    
    appDelegate.portfolioLabel.text = @"Test"; 
}

「portfolioLabel」は、View Controller にある IBOutlet UIlabel です。

4

0 に答える 0