`
jsntghf
  • 浏览: 2565749 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

UISplitView的简单示例

    博客分类:
  • iOS
阅读更多

splitAppDelegate.h

 

#import <UIKit/UIKit.h>

@class MasterViewController;
@class DetailViewController;

@interface splitAppDelegate : NSObject <UIApplicationDelegate> {    
    UIWindow *window;    
    UISplitViewController *splitViewController;    
    MasterViewController *masterViewController;
    DetailViewController *detailViewController;
}

@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) UISplitViewController *splitViewController;
@property (nonatomic, retain) MasterViewController *masterViewController;
@property (nonatomic, retain) DetailViewController *detailViewController;

@end

 

splitAppDelegate.m

 

#import "splitAppDelegate.h"
#import "MasterViewController.h"
#import "DetailViewController.h"

@implementation splitAppDelegate

@synthesize window, splitViewController, masterViewController, detailViewController;

#pragma mark -
#pragma mark Application lifecycle

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    
	masterViewController = [[MasterViewController alloc] initWithStyle:UITableViewStylePlain];
    UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:masterViewController];
	
    detailViewController = [[DetailViewController alloc] initWithNibName:@"DetailView" bundle:nil];
    masterViewController.detailViewController = detailViewController;
    
    splitViewController = [[UISplitViewController alloc] init];
    splitViewController.viewControllers = [NSArray arrayWithObjects:navigationController, detailViewController, nil];
	splitViewController.delegate = detailViewController;
	
	[masterViewController release];
	[detailViewController release];
	[navigationController release];
    
	[window addSubview:splitViewController.view];
    [window makeKeyAndVisible];
    
    return YES;
}

#pragma mark -
#pragma mark Memory management

- (void)dealloc {
    [splitViewController release];
    [window release];
    [super dealloc];
}

@end

 

MasterViewController.h

 

#import <UIKit/UIKit.h>

@class DetailViewController;

@interface MasterViewController : UITableViewController {
    DetailViewController *detailViewController;
	NSMutableArray * fruits;
}

@property (nonatomic, retain) IBOutlet DetailViewController *detailViewController;
@property (nonatomic, retain) NSMutableArray *fruits;

@end

 

MasterViewController.m

 

#import "MasterViewController.h"
#import "DetailViewController.h"

@implementation MasterViewController

@synthesize detailViewController;
@synthesize fruits;

#pragma mark -
#pragma mark Size for popover

- (CGSize)contentSizeForViewInPopoverView {
    return CGSizeMake(200.0, 400.0);
}

#pragma mark -
#pragma mark View lifecycle

- (void)viewDidLoad {
    [super viewDidLoad];
	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 {    
    [detailViewController release];
    [super dealloc];
}

@end

 

DetailViewController.h

 

#import <UIKit/UIKit.h>

@interface DetailViewController : UIViewController <UIPopoverControllerDelegate, UISplitViewControllerDelegate> {    
    UIPopoverController *popoverController;
    UINavigationBar *navigationBar;    
    id detailItem;	
	IBOutlet UIImageView *fruitImageView;
}

@property (nonatomic, retain) UIPopoverController *popoverController;
@property (nonatomic, retain) IBOutlet UINavigationBar *navigationBar;
@property (nonatomic, retain) id detailItem;
@property (nonatomic, retain) IBOutlet UIImageView *fruitImageView;

@end

 

DetailViewController.m

 

#import "DetailViewController.h"
#import "MasterViewController.h"

@implementation DetailViewController

@synthesize navigationBar, popoverController, detailItem,fruitImageView;

#pragma mark -
#pragma mark Managing the popover controller

- (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]];
    }
	
    if (popoverController != nil) {
        [popoverController dismissPopoverAnimated:YES];
    }        
}

#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 {    
	self.popoverController = nil;
}

- (void)viewDidUnload {
	self.popoverController = nil;
}

#pragma mark -
#pragma mark Memory management

- (void)dealloc {
    [popoverController release];
    [navigationBar release];    
    [detailItem release];
    [super dealloc];
}

@end

 

示例图:


分享到:
评论
4 楼 itliugang 2013-07-16  
博主,能把代码提供下,参考吗?灰常感谢!
3 楼 aceor 2012-07-17  
楼主,你能把你的程序发给我看看吗?邮箱地址:94520491@qq.com。非常感谢。
2 楼 jsntghf 2012-07-17  
DetailViewController在xib里是有的,按照本文的做法是可以实现的。
1 楼 aceor 2012-07-17  
楼主,这个程序中MasterViewController.h文件
@property (nonatomic, retain) IBOutlet DetailViewController *detailViewController;
这个iboutlet是怎么关联的?你的DetailViewController是在splitAppDelegate.m中程序动态生成的,不是xib文件画的,这个怎么关联呢?求指点。
另外博主可不可以把这个程序的代码发给我参考一下啊。

相关推荐

    分别用Java和Python实现遗传算法的简单示例.zip

    遗传算法:分别用Java和Python实现遗传算法的简单示例.zip 遗传算法:分别用Java和Python实现遗传算法的简单示例.zip 遗传算法:分别用Java和Python实现遗传算法的简单示例.zip 遗传算法:分别用Java和Python实现...

    axure简单示例(菜单示例)

    axure示例,简单示例,图片轮播,菜单选择,很简单的示例。 只有一个首页的图片轮播效果,和菜单选择效果。不喜勿喷。

    openlayers3 简单示例

    openlayers 3 示例代码 demo.html:基本的地图展示示例 - map-animation.html:地图动画效果示例 - map-zoom.html:地图基本缩放操作示例 - map-controls.html:地图控件显示的操作示例 - map-geojson.html: 加载...

    HibernateTemplate的简单示例

    HibernateTemplate的简单示例

    在自己C++代码中使用openpose的简单示例

    在自己C++代码中使用openpose的简单示例,有助于灵活的使用openpose而不是简单的运行官方demo

    超简单AIoT物联网与网站假设必学神器:Node-RED视觉化开发工具配套示例代码

    超简单AIoT物联网与网站假设必学神器:Node-RED视觉化开发工具配套示例代码 超简单AIoT物联网与网站假设必学神器:Node-RED视觉化开发工具配套示例代码 超简单AIoT物联网与网站假设必学神器:Node-RED视觉化开发工具...

    鼠标和键盘的全局钩子,及简单示例

    简单的全局钩子使用示例 包含两部分: 1.一个DLL用来写全局钩子(鼠标钩子用来把鼠标限定在某个区域中和键盘钩子用来钩小键盘的数据“0”和ALT+F用来决定是否把鼠标限定在区域中), 2.一个TESTDLL单文档结构的...

    基于SpringCloud的微服务简易示例代码

    基于SpringCloud的微服务简易示例代码

    spring rest 增删改查(put\delete\post\get)简单示例详细讲解

    spring rest 增删改查(put\delete\post\get)简单示例详细讲解,亲测可用。spring rest 增删改查(put\delete\post\get)简单示例详细讲解,亲测可用。spring rest 增删改查(put\delete\post\get)简单示例详细...

    UDP广播简单示例 学习

    UDP广播简单示例 有研究或探讨或开源的请加群:37424970 或联系本人MSN或邮箱:zhuseahui@yahoo.com.cn

    使用 Vue 2.0 进行路由而不使用 vue-router 的简单示例 .zip

    使用 Vue 2.0 进行路由而不使用 vue-router 的简单示例。Vue 2.0 简单路由示例这是一个使用 Vue 2.0 进行路由而不使用 vue-router 的简单示例。此分支使用原始 HTML5 History API。有关集成第三方路由解决方案的示例...

    linux 网络编程 epoll 简单示例 客户端

    linux 网络编程 epoll 简单示例 客户端 源码 只为学习epoll用 有不妥之处欢迎指正

    qt插件开发完整工程示例

    qt插件开发完整工程示例qt插件开发完整工程示例qt插件开发完整工程示例qt插件开发完整工程示例qt插件开发完整工程示例qt插件开发完整工程示例qt插件开发完整工程示例qt插件开发完整工程示例qt插件开发完整工程示例qt...

    vs2008 sql server 2005 C# 网上投票简单示例

    vs2008 sql server 2005 C# 网上投票简单示例 vs2008 sql server 2005 C# 网上投票简单示例 vs2008 sql server 2005 C# 网上投票简单示例 vs2008 sql server 2005 C# 网上投票简单示例

    小程序直传oss示例小程序直传oss示例

    小程序直传oss示例小程序直传oss示例小程序直传oss示例小程序直传oss示例小程序直传oss示例小程序直传oss示例小程序直传oss示例小程序直传oss示例小程序直传oss示例小程序直传oss示例小程序直传oss示例小程序直传oss...

    单片机开发简单示例教程

    单片机开发简单示例教程,基础入门教学示例,LED闪烁程序,温度传感器读取程序示例等

    设计模式示例代码(java)

    设计模式示例代码(java)设计模式示例代码(java)v设计模式示例代码(java)设计模式示例代码(java)设计模式示例代码(java)设计模式示例代码(java)设计模式示例代码(java)设计模式示例代码(java)设计模式示例代码(java)...

    google 示例 google 示例google 示例

    "google 示例google 示例google 示例google 示例"的描述虽然重复,但我们可以从中推测,这些示例可能涵盖了多个使用场景,可能是为了帮助开发者更好地理解和应用Google的技术。这可能包括搜索API、地图API、身份验证...

    JSP的安装、启动及简单示例

    JSP的安装、启动及简单示例JSP的安装、启动及简单示例JSP的安装、启动及简单示例JSP的安装、启动及简单示例

    extjs 2.0简单示例

    extjs 2.0简单示例,不全,基本上可以知道是什么东西。

Global site tag (gtag.js) - Google Analytics