iPad开发专有API-UIPopoverViewController和UISplitViewController

iPad专有api:漂浮视图控制器UIPopoverViewController和分割视图控制器UISplitViewController

----------------------------------UIPopoverViewController----------------------------------

AppDelegate.m

    UINavigationController *navi;

    if ([[UIDevice currentDevice]userInterfaceIdiom]==UIUserInterfaceIdiomPad)
    {//Ipad设备
        navi = [[UINavigationController alloc]initWithRootViewController:[IpadViewController new]];
    }
    else
    {
        navi = [[UINavigationController alloc]initWithRootViewController:[IphoneViewController new]];
    }

    self.window.rootViewController = navi;

IpadViewController.m

#import "IpadViewController.h"
#import "ListViewController.h"

@interface IpadViewController ()
{
    UIPopoverController *_leftPopController;
}
@end

@implementation IpadViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    self.title = @"Ipad";
    self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc]initWithTitle:@"Pop" style:UIBarButtonItemStyleDone target:self action:@selector(jumpLeftPop:)];
}

-(void)jumpLeftPop:(id)sender
{
    if (_leftPopController == nil)
    {
        ListViewController *list = [ListViewController new];
        UINavigationController *nav = [[UINavigationController alloc]initWithRootViewController:list];
        //漂浮视图控制器
        _leftPopController = [[UIPopoverController alloc]initWithContentViewController:nav];
        _leftPopController.delegate = self;
        _leftPopController.popoverContentSize = CGSizeMake(320, 300);
        list.pop = _leftPopController;
    }
    [_leftPopController presentPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];//模态显示
}

ListViewController.m

#import "ListViewController.h"

@interface ListViewController ()

@end

@implementation ListViewController

- (void)viewDidLoad
{
    self.title = @"选择你喜欢的颜色";
    _listTableView = [[UITableView alloc]initWithFrame:self.view.frame style:UITableViewStylePlain];
    _listTableView.delegate = self;
    _listTableView.dataSource = self;
    [self.view addSubview:_listTableView];

    [super viewDidLoad];
    // Do any additional setup after loading the view.

    self.dataSourse = [[NSMutableArray alloc]initWithArray: @[@"red",@"yellow",@"blue",@"green",@"gray"]];

}

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return  self.dataSourse.count;
}

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *identifier = @"cellIdentifier";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];
    if (cell == nil)
    {
        cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier];
    }
    cell.textLabel.text = [self.dataSourse objectAtIndex:indexPath.row];
    cell.selectionStyle = UITableViewCellSelectionStyleNone;
    return cell;
}

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    [self.pop dismissPopoverAnimated:YES];
}

-----------------------------------------SliptViewControllerDemo-----------------------------------------

AppDelegate.m

MasterViewController *master = [[MasterViewController alloc]init];
    UINavigationController *navMaster = [[UINavigationController alloc]initWithRootViewController:master];
    DetailViewController *detail = [[DetailViewController alloc]init];
    UINavigationController *navDetail = [[UINavigationController alloc]initWithRootViewController:detail];
    //分割视图控制器
    UISplitViewController *split = [[UISplitViewController alloc]init];
    split.viewControllers = @[navMaster,navDetail];
    split.delegate = detail;
    split.tabBarItem = detail.tabBarItem;
    self.window.rootViewController = split;

DetailViewController.h

@interface DetailViewController : UIViewController<UIPopoverControllerDelegate,UISplitViewControllerDelegate>

@property(nonatomic,retain)UIPopoverController *pop;

@end

DetailViewController.m

#import "DetailViewController.h"
#import "ModelViewController.h"

@interface DetailViewController ()
{
    ModelViewController *_modelController;
    UISegmentedControl *_segment;
}
@end

@implementation DetailViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    self.title = @"detail";
    self.view.backgroundColor = [UIColor whiteColor];

    _segment = [[UISegmentedControl alloc]initWithItems:@[@"one",@"two",@"three",@"four"]];
    _segment.frame = CGRectMake(350,100, 320, 40);
    _segment.selectedSegmentIndex = 0;
    [self.view addSubview:_segment];

    UIButton *nextBtn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    nextBtn.frame = CGRectMake(350, 200, 200, 40);
    [nextBtn setTitle:@"nextController" forState:0];
    [nextBtn addTarget:self action:@selector(nextContrller:) forControlEvents:7];
    [self.view addSubview:nextBtn];

}

-(void)nextContrller:(id)sender
{
    if (_modelController==nil)
    {
        _modelController = [[ModelViewController alloc]init];
    }
    _modelController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;//转出动画样式
    switch (_segment.selectedSegmentIndex)
    {
        case 0:
        {
            _modelController.modalPresentationStyle = UIModalPresentationFullScreen;//全屏,默认样式,IPhone只能全屏
            break;
        }
        case 1:
        {
            _modelController.modalPresentationStyle = UIModalPresentationPageSheet;//竖屏全屏,横屏宽768
            break;
        }
        case 2:
        {
            _modelController.modalPresentationStyle = UIModalPresentationFormSheet;//不是全屏的,固定540*620
            break;
        }
        case 3:
        {
            _modelController.modalPresentationStyle = UIModalPresentationCurrentContext;//detailController控制器自身显示大小有关,全屏自身控制器
            break;
        }
        default:
            break;
    }

    [self presentViewController:_modelController animated:YES completion:nil];
}

#pragma mark 分割视图控制器DelegateMethods
- (void)splitViewController:(UISplitViewController *)svc
     willHideViewController:(UIViewController *)aViewController
          withBarButtonItem:(UIBarButtonItem *)barButtonItem
       forPopoverController:(UIPopoverController *)pc
{
    barButtonItem.title = @"主页列表";
    self.navigationItem.leftBarButtonItem = barButtonItem;
    self.pop = pc;
}

- (void)splitViewController: (UISplitViewController*)svc
     willShowViewController:(UIViewController *)aViewController
  invalidatingBarButtonItem:(UIBarButtonItem *)barButtonItem
{
    self.navigationItem.leftBarButtonItem = nil;
    self.pop = nil;
}
@end

MasterViewController.h

@interface MasterViewController : UIViewController<UITableViewDataSource,UITableViewDelegate>
@property(nonatomic,retain)NSMutableArray *dataSourse;
@property(nonatomic,retain)UITableView *listTableView;
@end

MasterViewController.m

#import "MasterViewController.h"

@interface MasterViewController ()

@end

@implementation MasterViewController

- (void)viewDidLoad
{
    self.title = @"master";
    _listTableView = [[UITableView alloc]initWithFrame:self.view.frame style:UITableViewStylePlain];
    _listTableView.delegate = self;
    _listTableView.dataSource = self;
    [self.view addSubview:_listTableView];
    [super viewDidLoad];
    self.dataSourse = [[NSMutableArray alloc]initWithArray: @[@"red",@"yellow",@"blue",@"green",@"gray"]];
}

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return  self.dataSourse.count;
}

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *identifier = @"cellIdentifier";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];
    if (cell == nil)
    {
        cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier];
    }
    cell.textLabel.text = [self.dataSourse objectAtIndex:indexPath.row];
    cell.selectionStyle = UITableViewCellSelectionStyleNone;
    return cell;
}

@end

Demo下载:https://github.com/forrHuen/iPadDemo

时间: 2024-10-15 21:14:42

iPad开发专有API-UIPopoverViewController和UISplitViewController的相关文章

初学iPad开发入门

iPad是一款苹果公司于2010年发布的平板电脑定位介于苹果的智能手机iPhone和笔记本电脑MacBook产品之间跟iPhone一样,搭载的是iOS操作系统 iPhone和iPad开发的区别 屏幕的尺寸 \分辨率 UI元素的排布 \设计 键盘 API 屏幕方向的支持 … … 1.iPhone&iPad开发异同 1.1键盘 iPad的虚拟键盘多了个退出键盘的按钮 1-iPhone键盘.png 2-iPad键盘.png 1.2iPad特有API iPad多了一些特有的类,比如: UIPopover

OC开发_Storyboard——iPad开发

iPad开发(Universal Applications) 一.iPad 1.判断是否在iPad上 BOOL iPad = ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad); 二.UISplitViewController 分割视图控制器 1.UISplitViewController 分割视图控制器(顶级视图,不能放在Nav或者其他视图中) (1  可以通过 if (self.splitVie

iPad开发简单介绍

iPad开发最大的不同在于iPhone的就是屏幕控件的适配,以及横竖屏的旋转. Storyboard中得SizeClass的横竖屏配置,也不支持iPad开发. 1.在控制器中得到设备的旋转方向 在 iOS8及以后,屏幕就只有旋转后屏幕尺寸之分,不再是过期的旋转方向. 在iOS7及以前得到屏幕旋转方向的方法 /** // UIInterfaceOrientation ,屏幕方向 UIInterfaceOrientationUnknown = UIDeviceOrientationUnknown,

iPad开发 - UIPopoverController控制器

iPad简介 什么是iPad 一款苹果公司于2010年发布的平板电脑 定位介于苹果的智能手机iPhone和笔记本电脑产品之间 跟iPhone一样,搭载的是iOS操作系统 iPad的市场情况 截止至2013年10月23日,iPad已经累计销售1.7亿台 在平板市场的占有率高达81% iPhone和iPad开发的区别 iPhone是手机,iPad.iPad Mini是平板电脑 iPhone和iPad开发的区别 屏幕的尺寸 \分辨率 UI元素的排布 \设计 键盘 API 屏幕方向的支持 - - 屏幕的

flask开发restful api

在此之前,向大家说明的是,我们整个框架用的是flask + sqlalchemy + redis.如果没有开发过web,还是先去学习一下,这边只是介绍如果从开发web转换到开发移动端.如果flask还不是很熟悉,我建议先到这个网站简单学习一下,非常非常简单.http://dormousehole.readthedocs.org/en/latest/ 一直想写一些特别的东西,能让大家学习讨论的东西.但目前网上的很多博客,老么就按照官方文档照本宣读,要么直接搬代码,什么都不说明.我写这个系列的博客,

开发restful api总结的几点小经验

与其说是开发,不如说是打补丁! 是个jesery+spring的restful service,加了一个权限校验部分,做了一些调整. 本来其实很简单的一个事,后来发现,这个代码太霸道.本来传个参数是action_id 这个东西,结果参数名字有如下:action_id,actionID,id 我只能说傻傻分不清楚到底你传的什么, 因为还有其他id,参数名字参考刚才的. 代码中的也是混乱,虽然我知道有很多先人在修改了,但是也不至于这样吧. 吐槽完毕. 1.N次开发restful api主意版本迭代,

iOS开发UI篇—iPad开发中得modal介绍

一.简单介绍 说明1: 在iPhone开发中,Modal是一种常见的切换控制器的方式 默认是从屏幕底部往上弹出,直到完全盖住后面的内容为止 说明2: 在iPad开发中,Modal的使用频率也是非常高的 对比iPhone开发,Modal在iPad开发中多了一些用法 二.呈现样式 (一)什么叫呈现样式 Modal出来的控制器,最终显示出来的样子 (二)Modal常见有4种呈现样式 (1)UIModalPresentationFullScreen :全屏显示(默认) (2)UIModalPresent

基于百度风云榜开发的API数据接口-为APP资讯资讯服务

是基于百度搜索风云榜采集的新闻信息,,该资讯会更好的体现人们关注的人多事件与热词 通过数据采集,同时发布相信的数据开放API接口 1.取得热词信息列表 如:api.yi18.net/top/list 2.取得热词信息详细 如:api.yi18.net/top/show?id=1 更多的API文档 doc.yi18.net/topwendang 数据镜像网站:  top.yi18.net API数据接口的免费开放,希望为更多的APP开发者提供更专业的数据 接口.为APP开发提供更简单的新闻热点板块

【课程分享】HTML5开发框架PhoneGap实战(jQuery Mobile开发、API解析、3个经典项目实战)

对这个课程有兴趣的朋友可以加我的QQ2059055336和我联系 课程讲师:厉风行 课程分类:Java 涉及项目:我要地图.豆瓣音乐.小强快跑 用到技术:HTML5.jQuery Mobile.PhoneGap 其他特性:PhoneGap API 涵盖内容:代码.视频.ppt 课时数量:40 PhoneGap前景 Adobe最近公开表示将会为HTML5开发推出更多有意义的工具.有业内人士表示,Adobe的HTML5战略特别值得注意,此外Adobe对于乔布斯的此番公开批评曾积极地回应道:"乔布斯说