ビューコントローラーに 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 です。