一、iPad

1、判断是否在iPad上

 BOOL iPad = ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad); 

二、UISplitViewController 分割视图控制器

1、UISplitViewController 分割视图控制器(顶级视图,不能放在Nav或者其他视图中)

  可以通过 if (self.splitViewController) 判断是否是分割视图中  

      @property (strong) UISplitViewController *splitViewController;

   控制器分为两部分, 代表 Master,  就是指 Detail

      @property (copy) NSArray *viewControllers;

比如说 UIViewController *detailVC = self.splitViewController.viewControllers[1];   如果我们处在分割视图中,它会返回detail,否则它会返回nil,这个也可以用来判断是否在分割视图中

2、delegate 协议(需要在ViewDidLoad之前就定义好协议,可能是在awakeFromNib)

.主要用来控制master和detail何时出现

.比如

- (BOOL)splitViewController:(UISplitViewController *)sender shouldHideViewController:(UIViewController *)master inOrientation:(UIInterfaceOrientation)orientation

{
return NO; //从不隐藏左边的master } - (BOOL)splitViewController:(UISplitViewController *)sender shouldHideViewController:(UIViewController *)master inOrientation:(UIInterfaceOrientation)orientation { return UIInterfaceOrientationIsPortrait(orientation);//只在竖屏中隐藏master(对应的detail 的左上角会有一个按钮可以切换回去,但是如果没有实现委托协议的话就没有这个按钮) } - (void)splitViewController:(UISplitViewController *)sender willHideViewController:(UIViewController *)master withBarButtonItem:(UIBarButtonItem *)barButtonItem forPopoverController:(UIPopoverController *)popover { barButtonItem.title = master.title; self.navigationItem.leftBarButton = barButtonItem;//相当于把返回master 的按钮设置为 UINavigationController的barButtonItem }
 

3、master中的点击如何在detail中响应呢?

.通过action,通过prepareSegue一样

     - (IBAction)doit

    {

         id detailViewController = self.splitViewController.viewControllers[];

         [detailViewController setSomeProperty:...];

   } 

.segue :但是它会更新整个视图控制器,包括我们设置的上面提到的navigtionItem的按钮,都会重新设置,所以很一般不采用

三、Popovers弹窗控制器

(不属于UIViewController,是一个NSObject,主要控制另外一个视图控制器弹出到屏幕上)

1、获得要弹出的视图控制器

@property (nonatomic, strong) UIViewController *contentViewController; //通过先获得这个要弹出的视图控制器

2、创建一个Popovers 的 segue

(需要注意的是,你在prepaeForsegue中获得的segue,是一个UIStoryboardPopoverSegue )

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue isKindOfClass:[UIStoryboardPopoverSegue class]]) {
UIPopoverController *popoverController =
((UIStoryboardPopoverSegue *)segue).popoverController;
...
} }

3、点击Popovers之外的地方,一般是默认隐藏的,但是如果它是弹窗控制器中这个视图数组中的视图的话,并不会消失隐藏

@property (copy) NSArray *passthroughViews; 

但是我们可以让它隐藏:

- (void)dismissPopoverAnimated:(BOOL)animated;  

- (void)popoverControllerDidDismissPopover:(UIPopoverController *)sender; 

iPad开发(Universal Applications)的更多相关文章

  1. OC开发_Storyboard——iPad开发

    iPad开发(Universal Applications) 一.iPad 1.判断是否在iPad上 BOOL iPad = ([[UIDevice currentDevice] userInterf ...

  2. iOS开发——高级篇——iPad开发、iPad开发中的modal

    一.iPad简介 1.什么是iPad一款苹果公司于2010年发布的平板电脑定位介于苹果的智能手机iPhone和笔记本电脑产品之间跟iPhone一样,搭载的是iOS操作系统 2.iPhone和iPadi ...

  3. 初学iPad开发入门

    iPad是一款苹果公司于2010年发布的平板电脑定位介于苹果的智能手机iPhone和笔记本电脑MacBook产品之间跟iPhone一样,搭载的是iOS操作系统 iPhone和iPad开发的区别 屏幕的 ...

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

    iOS开发UI篇—iPad开发中得modal介绍 一.简单介绍 说明1: 在iPhone开发中,Modal是一种常见的切换控制器的方式 默认是从屏幕底部往上弹出,直到完全盖住后面的内容为止 说明2: ...

  5. 使用 Portable Class Library(可移植类库)开发 Universal Windows App

    今天在这里跟大家聊聊关于 Windows Universal 应用夸平台的问题,首先Universal Windows App的定义相信大家已经有所了解了(如果你是一个刚刚接触 Universal A ...

  6. iPad开发(相对于iPhone开发时专有的API)

    iPad开发 一.iPad开发简介 1.什么是iPad 一款苹果公司于2010年发布的平板电脑 定价介于苹果的智能手机iPhone和笔记本电脑产品之间 跟iPhone一样,搭载的是iOS操作系统 2. ...

  7. iPad开发中UIPopoverController的使用

    什么是UIPopoverController 是iPad开发中常见的一种控制器 跟其他控制器不一样的是,它直接继承自NSObject,并非继承自UIViewController 它只占用部分屏幕空间来 ...

  8. (一〇八)iPad开发之横竖屏适配

    在iPad开发中,横竖屏的视图常常是不同的,例如侧边栏Dock,在横屏时用于屏幕较宽,可以展示足够多的内容,每个按钮都可以展示出标题:而竖屏时Dock应该比较窄,只显示图标不现实按钮标题. iPad比 ...

  9. ipad开发小结

    项目小结 :布局的时候最后要用CGRectDivi.. :控制器的生命周期---->(init-->(当self.view==nil调用 loadView viewdidload)--&g ...

  10. iOS - 初学iPad开发入门

    iPad是一款苹果公司于2010年发布的平板电脑定位介于苹果的智能手机iPhone和笔记本电脑MacBook产品之间跟iPhone一样,搭载的是iOS操作系统 iPhone和iPad开发的区别 屏幕的 ...

随机推荐

  1. 利用Jquery的load函数实现页面的动态加载

    利用Jquery的load函数实现页面的动态加载  js的强大功能相信大家都知晓,今天通过jquery的库函数load可以更加方便的实现页面的动态刷新,经过几天的研究与探索,终于有所成效!吾心甚蔚! ...

  2. 用CSS画个三角形

    <!DOCTYPE html> <html> <head> <style type="text/css"> #trangle { d ...

  3. 用phpcms开发模块时中文乱码问题

    学着用phpcms开发一个文件管理模块,出现中文乱码,折腾了半天,总结如下 1.自己在mysql客户端建表,默认表格的编码为latin1_swedish_ci,虽然可以建好后用alter命令修改编码, ...

  4. JS清除IE浏览器缓存的方法

    js中自动清除ie缓存方法 — 常用 对于动态文件,比如 index.asp?id=... 或者 index.aspx?id=... 相信有经验的程序员都知道怎样禁止浏览器缓存数据了.但是对于静态文件 ...

  5. iOS开发——网络篇——JSON和XML,NSJSONSerialization ,NSXMLParser(XML解析器),NSXMLParserDelegate,MJExtension (字典转模型),GDataXML(三方框架解析XML)

    一.JSON 1.JSON简介什么是JSONJSON是一种轻量级的数据格式,一般用于数据交互服务器返回给客户端的数据,一般都是JSON格式或者XML格式(文件下载除外) JSON的格式很像OC中的字典 ...

  6. [codevs1380]没有上司的舞会([BZOJ2060][Usaco2010 Nov]Visiting Cows 拜访奶牛)

    [codevs1380]没有上司的舞会 试题描述 Ural大学有N个职员,编号为1~N.他们有从属关系,也就是说他们的关系就像一棵以校长为根的树,父结点就是子结点的直接上司.每个职员有一个快乐指数.现 ...

  7. 回复《我要阻止做java开发的男朋友去创业型公司工作吗?》园友问题

    真的非常开心能收到这么多园友的关心,看到这么多的回复顿感身边处处充满爱.也非常感谢大家踊跃的帮我出谋划策,小女子在此有礼了! 我先来回答一下性别的问题(前面已经暴露了……),我是前端程序媛.大三时和男 ...

  8. ImageView显示网络图片

    package com.example.urlimage; import java.io.InputStream; import java.net.HttpURLConnection; import ...

  9. 如何将代码托管到GitHub上

    注册账号什么的直接省略吧...GitHub传送门:https://github.com/ 首先就是创建repository. 接着就是填写相关的信息了 点击Create repository,创建成功 ...

  10. 【架构】Google的大规模集群管理工具Borg

    参考资料: http://www.cnblogs.com/YaoDD/p/5374393.html http://www.cnblogs.com/YaoDD/p/5351589.html