Skip to content

Commit

Permalink
Added example code to show a table view within a popover view.
Browse files Browse the repository at this point in the history
  • Loading branch information
Andreas Katzian committed Oct 4, 2010
1 parent b366b04 commit 322e4f9
Show file tree
Hide file tree
Showing 7 changed files with 661 additions and 22 deletions.
6 changes: 6 additions & 0 deletions PopoverView/Classes/MainViewController.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,26 +8,32 @@

#import <UIKit/UIKit.h>
#import "ViewWithPickerController.h"
#import "TablePopoverController.h"

@interface MainViewController : UIViewController <PopoverPickerDelegate> {

UIPopoverController *popoverController;

IBOutlet UIButton *popoverButton;
IBOutlet UIButton *popoverButtonForPicker;
IBOutlet UIButton *popoverButtonForTable;

ViewWithPickerController *viewWithPickerController;
TablePopoverController *tablePopoverController;
}

@property(nonatomic, retain) UIPopoverController *popoverController;
@property(nonatomic, retain) IBOutlet UIButton *popoverButton;
@property(nonatomic, retain) IBOutlet UIButton *popoverButtonForPicker;
@property(nonatomic, retain) IBOutlet UIButton *popoverButtonForTable;

@property(nonatomic, retain) ViewWithPickerController *viewWithPickerController;
@property(nonatomic, retain) TablePopoverController *tablePopoverController;

- (void) toolbarAction:(id) sender;
- (void) buttonAction:(id) sender;
- (void) showPickerPopupAction:(id) sender;
- (void) showTablePopupAction:(id) sender;


@end
Expand Down
57 changes: 44 additions & 13 deletions PopoverView/Classes/MainViewController.m
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,15 @@

#import "MainViewController.h"


@implementation MainViewController

@synthesize popoverController, popoverButton, viewWithPickerController, popoverButtonForPicker;
@synthesize popoverController;
@synthesize popoverButton;
@synthesize viewWithPickerController;
@synthesize popoverButtonForPicker;
@synthesize tablePopoverController;
@synthesize popoverButtonForTable;

//method which gets called when button at toolbar was activated
- (void) toolbarAction:(id) sender {
Expand Down Expand Up @@ -38,8 +44,8 @@ - (void) toolbarAction:(id) sender {
popoverContent.contentSizeForViewInPopover = CGSizeMake(300, 400);

//create a popover controller
self.popoverController = [[UIPopoverController alloc]
initWithContentViewController:popoverContent];
self.popoverController = [[[UIPopoverController alloc]
initWithContentViewController:popoverContent] autorelease];

//present the popover view non-modal with a
//refrence to the toolbar button which was pressed
Expand Down Expand Up @@ -82,8 +88,8 @@ - (void) buttonAction:(id) sender {
popoverContent.contentSizeForViewInPopover = CGSizeMake(200, 300);

//create a popover controller
self.popoverController = [[UIPopoverController alloc]
initWithContentViewController:popoverContent];
self.popoverController = [[[UIPopoverController alloc]
initWithContentViewController:popoverContent] autorelease];

//present the popover view non-modal with a
//refrence to the button pressed within the current view
Expand All @@ -100,9 +106,9 @@ - (void) buttonAction:(id) sender {

- (void) showPickerPopupAction:(id) sender {
//create the view controller from nib
self.viewWithPickerController = [[ViewWithPickerController alloc]
self.viewWithPickerController = [[[ViewWithPickerController alloc]
initWithNibName:@"ViewWithPicker"
bundle:[NSBundle mainBundle]];
bundle:[NSBundle mainBundle]] autorelease];


//set popover content size
Expand All @@ -114,8 +120,8 @@ - (void) showPickerPopupAction:(id) sender {


//create a popover controller
self.popoverController = [[UIPopoverController alloc]
initWithContentViewController:viewWithPickerController];
self.popoverController = [[[UIPopoverController alloc]
initWithContentViewController:viewWithPickerController] autorelease];


//present the popover view non-modal with a
Expand All @@ -126,6 +132,29 @@ - (void) showPickerPopupAction:(id) sender {
animated:YES];
}

- (void) showTablePopupAction:(id) sender
{
//create the view controller from nib
self.tablePopoverController = [[[TablePopoverController alloc]
initWithNibName:@"TablePopover"
bundle:[NSBundle mainBundle]] autorelease];

//set popover content size
tablePopoverController.contentSizeForViewInPopover = CGSizeMake(320, 300);

//create a popover controller
self.popoverController = [[[UIPopoverController alloc]
initWithContentViewController:tablePopoverController] autorelease];


//present the popover view non-modal with a
//refrence to the button pressed within the current view
[self.popoverController presentPopoverFromRect:popoverButtonForTable.frame
inView:self.view
permittedArrowDirections:UIPopoverArrowDirectionAny
animated:YES];
}

// Method gets called whenever the selection of an element
// within the picker view in the popover view occurs.
- (void) viewWithPickerController:(ViewWithPickerController*) viewWithPickerController didSelectValue:(NSString*) value
Expand All @@ -148,10 +177,12 @@ - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interface


- (void)dealloc {
self.popoverController = nil;
self.popoverButton = nil;
self.viewWithPickerController = nil;
self.popoverButtonForPicker = nil;
self.popoverController = nil;
self.popoverButton = nil;
self.viewWithPickerController = nil;
self.popoverButtonForPicker = nil;
self.tablePopoverController = nil;
self.popoverButtonForTable = nil;

[super dealloc];
}
Expand Down
16 changes: 16 additions & 0 deletions PopoverView/Classes/TablePopoverController.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
//
// TablePopoverController.h
// PopoverView
//
// Created by Andreas Katzian on 04.10.10.
// Copyright 2010 Blackwhale GmbH. All rights reserved.
//

#import <UIKit/UIKit.h>


@interface TablePopoverController : UITableViewController {

}

@end
66 changes: 66 additions & 0 deletions PopoverView/Classes/TablePopoverController.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
//
// TablePopoverController.m
// PopoverView
//
// Created by Andreas Katzian on 04.10.10.
// Copyright 2010 Blackwhale GmbH. All rights reserved.
//

#import "TablePopoverController.h"


@implementation TablePopoverController



#pragma mark -
#pragma mark Table view data source

// Return the number of sections.
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 3;
}


// Return the number of rows in the section.
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return 1;
}


// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

static NSString *CellIdentifier = @"Cell";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];
}

cell.detailTextLabel.text = [NSString stringWithFormat:@"This is cell nr. %d", indexPath.section];
cell.textLabel.text = [NSString stringWithFormat:@"Cell %d", indexPath.section];

return cell;
}


#pragma mark -
#pragma mark Table view delegate

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
//do something in here
}


#pragma mark -
#pragma mark Memory management


- (void)dealloc {
[super dealloc];
}


@end

Loading

0 comments on commit 322e4f9

Please sign in to comment.