https://blog.csdn.net/weixin_43704791/article/details/86424080

2019年01月13日

AppDelegate中:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {

// Override point for customization after application launch.

let master = MasterViewController()

let detail = DetailViewController()

master.detailViewController = detail

let navigationController = UINavigationController(rootViewController: master)

//判断设备

if UIDevice.current.userInterfaceIdiom == .phone{

self.window?.rootViewController = navigationController

}else{

//创建分割视图控制器(iPad特有)

let split = UISplitViewController()

//横屏下显示

split.viewControllers = [navigationController,detail]

self.window?.rootViewController = split

}

return true

}

创建MAsterViewController:

import UIKit

class MasterViewController: UIViewController,UITableViewDelegate,UITableViewDataSource {

var tableView:UITableView!

var ctrls = ["A","B","C"]

var detailViewController:DetailViewController!

override func viewDidLoad() {

super.viewDidLoad()

self.title = "列表"

self.tableView = UITableView(frame: self.view.frame,style:.plain)

self.tableView.delegate = self

self.tableView.dataSource = self

self.tableView.register(UITableViewCell.self, forCellReuseIdentifier: "ReusedCell")

self.view.addSubview(tableView)

}

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

return ctrls.count

}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

let identifier = "ReusedCell"

let cell = tableView.dequeueReusableCell(withIdentifier: identifier, for: indexPath)

cell.accessoryType = .disclosureIndicator

cell.textLabel?.text = self.ctrls[indexPath.row]

return cell

}

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {

detailViewController!.loadControl(ctrl: self.ctrls[indexPath.row])

//        detailViewController.title = ctrls[indexPath.row]

if (UIDevice.current.userInterfaceIdiom == .phone){

tableView.deselectRow(at: indexPath, animated: true)

self.navigationController?.pushViewController(detailViewController, animated: true)

}

}

}

DetailViewController:

import UIKit

class DetailViewController: UIViewController {

override func viewDidLoad() {

super.viewDidLoad()

self.view.backgroundColor = UIColor.white

let ctrl = self.title != nil ? self.title! : ""

loadControl(ctrl: ctrl)

}

func loadControl(ctrl:String){

clearViews()

switch ctrl {

case "A":

let label = UILabel(frame: self.view.bounds)

label.backgroundColor = UIColor.black

label.textColor = UIColor.orange

label.text = "hellow"

self.view.addSubview(label)

case "B":

let button = UIButton(frame: CGRect(x: 150, y: 250, width: 100, height: 100))

button.setTitle("按钮", for: .normal)

button.backgroundColor = UIColor.red

self.view.addSubview(button)

case "C":

let uiSwitch = UISwitch(frame: CGRect(x: 150, y: 250, width: 0, height: 0))

uiSwitch.setOn(false, animated: true)

self.view.addSubview(uiSwitch)

default:

print("error")

}

}

func clearViews(){

for v in self.view.subviews{

v.removeFromSuperview()

}

}

}

Swift - UISplitViewController的更多相关文章

  1. Swift之分割视图控制器-UISplitViewController

    Swift之分割视图控制器-UISplitViewController UISplitViewController这种控制器只能用于iPad,它可以在iPad屏幕中显示两个不同的场景:在横向模式下,左 ...

  2. iOS - UISplitViewController

    前言 NS_CLASS_AVAILABLE_IOS(3_2) @interface UISplitViewController : UIViewController @available(iOS 3. ...

  3. iOS开发——设备篇Swift篇&判断设备类型

    判断设备类型   1,分割视图控制器(UISplitViewController) 在iPhone应用中,使用导航控制器由上一层界面进入下一层界面. 但iPad屏幕较大,通常使用SplitViewCo ...

  4. Swift - 判断设备类型开发兼容的iOS应用(iPad使用分隔视图控制器)

    1,分割视图控制器(UISplitViewController) 在iPhone应用中,使用导航控制器由上一层界面进入下一层界面. 但iPad屏幕较大,通常使用SplitViewController来 ...

  5. iOS代码规范(OC和Swift)

    下面说下iOS的代码规范问题,如果大家觉得还不错,可以直接用到项目中,有不同意见 可以在下面讨论下. 相信很多人工作中最烦的就是代码不规范,命名不规范,曾经见过一个VC里有3个按钮被命名为button ...

  6. Swift与C#的基础语法比较

    背景: 这两天不小心看了一下Swift的基础语法,感觉既然看了,还是写一下笔记,留个痕迹~ 总体而言,感觉Swift是一种前后端多种语言混合的产物~~~ 做为一名.NET阵营人士,少少多多总喜欢通过对 ...

  7. iOS开发系列--Swift语言

    概述 Swift是苹果2014年推出的全新的编程语言,它继承了C语言.ObjC的特性,且克服了C语言的兼容性问题.Swift发展过程中不仅保留了ObjC很多语法特性,它也借鉴了多种现代化语言的特点,在 ...

  8. 算法与数据结构(十七) 基数排序(Swift 3.0版)

    前面几篇博客我们已经陆陆续续的为大家介绍了7种排序方式,今天博客的主题依然与排序算法相关.今天这篇博客就来聊聊基数排序,基数排序算法是不稳定的排序算法,在排序数字较小的情况下,基数排序算法的效率还是比 ...

  9. 算法与数据结构(十五) 归并排序(Swift 3.0版)

    上篇博客我们主要聊了堆排序的相关内容,本篇博客,我们就来聊一下归并排序的相关内容.归并排序主要用了分治法的思想,在归并排序中,将我们需要排序的数组进行拆分,将其拆分的足够小.当拆分的数组中只有一个元素 ...

随机推荐

  1. 本地连接 HDFS 报错 Exception in thread "main" org.apache.hadoop.security.AccessControlException: org.apache.hadoop.security.AccessControlException: Permission denied: user=JM.H,access=WRITE, inode="":r

    此时 到hdfs机器下修改hdfs-site.xml即可 添加如下配置 <property> <name>dfs.permissions</name> <va ...

  2. 分享一款免费的工控组态软件(PCHMI)

    PCHMI严格的讲它并不是一款组态软件,也不是一款SCADA软件,而是一个基于.NET构架的DLL文件,开发者可以使用微软的Visual Studio将PCHMI.DLL加载到工具箱里面进行二次开发. ...

  3. 通过虚拟机增加Linux的磁盘(分区容量)

    因为安装oracle设置的磁盘空间不足,所以安装失败.这里总结一下如何添加磁盘挂载 1. 右键虚拟机点击设置,然后点击磁盘,点击添加按钮 2.然后点击下一步下一步,直到安装成功 3.然后输入 fdis ...

  4. XV6源代码阅读-同步机制

    Exercise1 源代码阅读 锁部分:spinlock.h/spinlock.c以及相关其他文件代码 // Mutual exclusion lock. struct spinlock { uint ...

  5. numpy.linspace使用详解

    numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None) 在指定的间隔内返回均匀间隔的数字. 返回nu ...

  6. 07 MySQL常用内置函数

    常用函数     1.字符串函数         CONCAT(str1,str2,..,strN)             将str1,str2..strN 拼接成一个字符串,当这里有任何一个为NU ...

  7. (一)微信小程序环境搭建

    1 注册 首先 打开(https://mp.weixin.qq.com/)微信公众平台官网 选着 小程序 之后 在新的页面选择 选着前往注册 按照提示注册 注意:个人版和企业版有一定的区别 2 开发者 ...

  8. 在excel表格里,为所有数字添上绿色小三角

    在excel表格里,为所有数字添上绿色小三角的方法有4种: 1. 为一个单元格添加:直接在单元格里添加一个英文的逗号 2. 为一列数据添加:选中要添加绿色小三角的列,选择 数据-->分列--&g ...

  9. Java多线程之以7种方式让主线程等待子线程结束

    记一次主线程等待子线程结束的多种方法的学习 在学习多线程时,最开始遇到的问题其实是"计算子线程运行时间",写到最后发现本文和标题更为符合,但是仍然基于问题:"在主线程中获 ...

  10. (win32)解决虚拟按键被输入法截获(转)

    源博客地址:http://blog.csdn.net/kencaber/article/details/51417871 响应WM_KEYDOWN消息时发现`~快捷键无效,设置断点发现得到的按键消息根 ...