`
jsntghf
  • 浏览: 2552864 次
  • 性别: 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

    struts 2.3.7 简单示例

    struts 2.3.7简单示例。 示例实现用户登录功能,由于该示例是ssh整合的第一步,所以并未包含Spring、Hibernate框架,仅是Struts2的示例。 如果需要其他整合,请看:http://blog.csdn.net/xz2001/

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

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

    bootstrap实现的自适应页面简单应用示例

    Bootstrap实现的自适应页面简单应用示例 在本文中,我们将详细介绍Bootstrap实现的自适应页面简单应用示例,结合具体实例形式分析了基于Bootstrap的列表布局结构页面实现与使用技巧。 首先,让我们了解什么是...

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

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

    EPlayer简易播放器示例程序

    各位编程爱好者:EPlayer简易播放器示例程序。 程序的测试环境:Delphi6.0操作系统是Windows XP,涉及到相关应用技巧有:(1)API,左右声道的控制都使WindowsAPI的调用。(2)Delphi的Mediaplay控件的调用(3)MMSystem接口...

    基于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用 有不妥之处欢迎指正

    AJax简单示例 .net实现

    AJAX 初学者示例AJAX 初学者示例AJAX 初学者示例AJAX 初学者示例AJAX 初学者示例AJAX 初学者示例AJAX 初学者示例AJAX 初学者示例AJAX 初学者示例AJAX 初学者示例AJAX 初学者示例AJAX 初学者示例AJAX 初学者示例AJAX ...

    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# 网上投票简单示例

    单片机开发简单示例教程

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

    qt插件开发完整工程示例

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

Global site tag (gtag.js) - Google Analytics