UISplitView的简单示例
以前写了一篇文章:UISplitView的简单示例,这篇文章实现的功能类似,具体的实现请参考附件。
?
#import <UIKit/UIKit.h>@class RootViewController;@class DetailViewController;@interface SplitViewTestAppDelegate : NSObject <UIApplicationDelegate> { UIWindow *window; UISplitViewController *splitViewController; RootViewController *rootViewController; DetailViewController *detailViewController;}@property (nonatomic, retain) IBOutlet UIWindow *window;@property (nonatomic, retain) IBOutlet UISplitViewController *splitViewController;@property (nonatomic, retain) IBOutlet RootViewController *rootViewController;@property (nonatomic, retain) IBOutlet DetailViewController *detailViewController;@end
#import "SplitViewTestAppDelegate.h"#import "RootViewController.h"#import "DetailViewController.h"@implementation SplitViewTestAppDelegate@synthesize window, splitViewController, rootViewController, detailViewController;#pragma mark -#pragma mark Application lifecycle- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { [window addSubview:splitViewController.view]; [window makeKeyAndVisible]; return YES;}#pragma mark -#pragma mark Memory management- (void)dealloc { [splitViewController release]; [window release]; [super dealloc];}@end
#import <UIKit/UIKit.h>@class DetailViewController;@interface RootViewController : UITableViewController { DetailViewController *detailViewController; NSMutableArray *fruits;}@property (nonatomic, retain) IBOutlet DetailViewController *detailViewController;@property (nonatomic, retain) NSMutableArray *fruits;@end
#import "RootViewController.h"#import "DetailViewController.h"@implementation RootViewController@synthesize detailViewController;@synthesize fruits;#pragma mark -#pragma mark View lifecycle- (void)viewDidLoad { [super viewDidLoad];self.title = @"List of Fruits"; self.clearsSelectionOnViewWillAppear = NO; self.contentSizeForViewInPopover = CGSizeMake(320.0, 600.0);self.fruits = [[NSArray arrayWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"fruits" ofType:@"plist"]] retain];}#pragma mark -#pragma mark Table view data source- (NSInteger)tableView:(UITableView *)aTableView numberOfRowsInSection:(NSInteger)section { return [fruits count];}- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *CellIdentifier = @"CellIdentifier"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) { cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; cell.accessoryType = UITableViewCellAccessoryNone; } cell.textLabel.text = [self.fruits objectAtIndex:indexPath.row]; return cell;}#pragma mark -#pragma mark Table view delegate- (void)tableView:(UITableView *)aTableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { detailViewController.detailItem = [self.fruits objectAtIndex:indexPath.row];}#pragma mark -#pragma mark Memory management- (void)dealloc {[self.fruits release]; [detailViewController release]; [super dealloc];}@end
#import <UIKit/UIKit.h>@interface DetailViewController : UIViewController <UIPopoverControllerDelegate, UISplitViewControllerDelegate> { UIPopoverController *popoverController; UINavigationBar *navigationBar; id detailItem; UILabel *detailDescriptionLabel;IBOutlet UIImageView *fruitImageView;}@property (nonatomic, retain) IBOutlet UINavigationBar *navigationBar;@property (nonatomic, retain) id detailItem;@property (nonatomic, retain) IBOutlet UILabel *detailDescriptionLabel;@property (nonatomic, retain) IBOutlet UIImageView *fruitImageView;@end
#import "DetailViewController.h"#import "RootViewController.h"@interface DetailViewController ()@property (nonatomic, retain) UIPopoverController *popoverController;- (void)configureView;@end@implementation DetailViewController@synthesize navigationBar, popoverController, detailItem, detailDescriptionLabel, fruitImageView;#pragma mark -#pragma mark Managing the detail item- (void)setDetailItem:(id)newDetailItem { if (detailItem != newDetailItem) { [detailItem release]; detailItem = [newDetailItem retain]; navigationBar.topItem.title = detailItem;NSString *imageName = [NSString stringWithFormat:@"%@.png", detailItem];[self.fruitImageView setImage:[UIImage imageNamed:imageName]]; [self configureView]; } if (popoverController != nil) { [popoverController dismissPopoverAnimated:YES]; } }- (void)configureView { detailDescriptionLabel.text = [detailItem description]; }#pragma mark -#pragma mark Split view support- (void)splitViewController: (UISplitViewController*)svc willHideViewController:(UIViewController *)aViewController withBarButtonItem:(UIBarButtonItem*)barButtonItem forPopoverController: (UIPopoverController*)pc { barButtonItem.title = @"Master List"; [navigationBar.topItem setLeftBarButtonItem:barButtonItem animated:YES]; self.popoverController = pc;}- (void)splitViewController: (UISplitViewController*)svc willShowViewController:(UIViewController *)aViewController invalidatingBarButtonItem:(UIBarButtonItem *)barButtonItem { [navigationBar.topItem setLeftBarButtonItem:nil animated:YES]; self.popoverController = nil;}- (void)viewDidUnload { self.popoverController = nil;}#pragma mark -#pragma mark Memory management- (void)dealloc { [popoverController release]; [navigationBar release]; [detailItem release]; [detailDescriptionLabel release]; [super dealloc];}@end