01-Popover跳转

2024-09-02 15:58
文章标签 01 跳转 popover

本文主要是介绍01-Popover跳转,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Popover跳转

1.1-简介

这里写图片描述

  • 什么是Popover?

    • UIViewController进行跳转的时候,可以设置跳转样式
      • Popover样式是iOS8加入的新特性

这里写图片描述

1.2-在StoryBoard中使用Popover

  • 1.创建目标控制器
  • 2.连线控制器,选择present as popover
  • 3.设置popover大小

这里写图片描述

  • ViewController.swift

import UIKitclass ViewController: UIViewController {override func viewDidLoad() {super.viewDidLoad()// Do any additional setup after loading the view, typically from a nib.}override func didReceiveMemoryWarning() {super.didReceiveMemoryWarning()// Dispose of any resources that can be recreated.}//segue跳转override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {//获取目标控制器let desVC = segue.destinationViewController//获取目标控制器的popover对象let popover = desVC.popoverPresentationController//适配iPhone  iOS会根据设备类型选择不同的Model展示效果,如果希望iPhone上面展示popover效果 则需要通过设置代理取消系统的自适应popover?.delegate = selfif segue.identifier == "function"{//设置popover的大小  当控制器为popover的目标控制器时,使用preferredContentSize可以设置popover的大小desVC.preferredContentSize = CGSizeMake(100, 100)}else if segue.identifier == "group"{//按照跳转popover的交互控件分类,主要由两种,一种是UIBarButtonItem,一种是非UIBarButtonItem,统称为来源视图,popover的参考点会默认设置在来源视图的左上角//修改popover参考点的位置 默认是来源视图的左上角  设置bounds为参考点时 则会将来源视图的中心点设置为参考点popover?.sourceRect = (popover?.sourceView?.bounds)!}}}extension ViewController:UIPopoverPresentationControllerDelegate
{//当设置Model展示的自适应效果时会调用func adaptivePresentationStyleForPresentationController(controller: UIPresentationController) -> UIModalPresentationStyle {//不进行自适应return UIModalPresentationStyle.None}//    //如果iPhone上面  不取消自适应  也可以手动给popover添加一个导航栏 按钮来实现取消跳转
//    func presentationController(controller: UIPresentationController, viewControllerForAdaptivePresentationStyle style: UIModalPresentationStyle) -> UIViewController? {
//        let nv = UINavigationController.init(rootViewController: controller.presentedViewController)
//        let btnDone = UIBarButtonItem(title: "Done", style: .Done, target: self, action: "dismiss:")
//        
//        nv.topViewController!.navigationItem.rightBarButtonItem = btnDone
//       
//        return nv
//    }
//    
//    func dismiss(btn:UIButton)
//    {
//        
//        print(btn.nextResponder()?.nextResponder()?.nextResponder())
//        //该用法慎用~ 你懂得…… (逼格太高,一般人看不懂,不符合项目编码规范)
//        //原理是 UIButton和UIViewController都是继承于UIResponder  利用响应链通过UIButton找到其所在的UINavigationController
//        let nv = btn.nextResponder()?.nextResponder()?.nextResponder() as? UINavigationController
//        nv?.dismissViewControllerAnimated(true, completion: { () -> Void in
//            
//        })
//    }
}

1.3-总结

  • 当控制器model跳转样式为popover样式时,可以通过目标控制器的popoverPresentationController获取对应的UIPopoverPresentationController对象

  • popover样式进行跳转的时候,iPad样式和iPhone样式区别

    • iPad下默认是弹窗形式,且代码无法更改
    • iPhone下默认是全屏显示,并且不会自带消失按钮
      • 第一种解决方案:实现UIPopoverPresentationControllerDelegate,取消自适应
      • 第二种解决方案:实现UIPopoverPresentationControllerDelegate,采用UINavigationController替换原有Controller,手动添加消失按钮
  • popover常用属性有两个,SourceView和SourceRect

    • SourceView:来源视图,Storyboard跳转默认的是连线的那一个视图,代码跳转需要手动指定
    • SourceRect:目标参考点,根据来源视图的种类分为两种,UIBarButtonItem和非UIBarButtonItem。
      • 非UIBarButtonItem:默认在来源视图的左上角,当使用来源视图的bounds为参考点时,则会将来源视图的中心点设置为参考点
      • UIBarButtonItem:系统自动适应,设置无效
  • popover箭头方向可以通过设置permittedArrowDirections属性更改

    • 默认为Unknow(系统自动判断)

这里写图片描述

这篇关于01-Popover跳转的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1130407

相关文章

hdu 2602 and poj 3624(01背包)

01背包的模板题。 hdu2602代码: #include<stdio.h>#include<string.h>const int MaxN = 1001;int max(int a, int b){return a > b ? a : b;}int w[MaxN];int v[MaxN];int dp[MaxN];int main(){int T;int N, V;s

集中式版本控制与分布式版本控制——Git 学习笔记01

什么是版本控制 如果你用 Microsoft Word 写过东西,那你八成会有这样的经历: 想删除一段文字,又怕将来这段文字有用,怎么办呢?有一个办法,先把当前文件“另存为”一个文件,然后继续改,改到某个程度,再“另存为”一个文件。就这样改着、存着……最后你的 Word 文档变成了这样: 过了几天,你想找回被删除的文字,但是已经记不清保存在哪个文件了,只能挨个去找。真麻烦,眼睛都花了。看

01 Docker概念和部署

目录 1.1 Docker 概述 1.1.1 Docker 的优势 1.1.2 镜像 1.1.3 容器 1.1.4 仓库 1.2 安装 Docker 1.2.1 配置和安装依赖环境 1.3镜像操作 1.3.1 搜索镜像 1.3.2 获取镜像 1.3.3 查看镜像 1.3.4 给镜像重命名 1.3.5 存储,载入镜像和删除镜像 1.4 Doecker容器操作 1.4

Clion不识别C代码或者无法跳转C语言项目怎么办?

如果是中文会显示: 此时只需要右击项目,或者你的源代码目录,将这个项目或者源码目录标记为项目源和头文件即可。 英文如下:

实现日期往前或往后或跳转到指定月份或天数

//月份跳转 //初始日期 String yearMonth = "201702"; String yearMonthStr = ""; //往前(负数)或往后(正数) int add = -2; SimpleDateFormat sdf = new SimpleDateFormat("yyyyMM"); Date source = sdf.parse(yearMonth); Cal

【视频教程】手把手AppWizard轻松制作一个emWin滑动主界面控制框架,任意跳转控制(2024-09-06)

现在的新版AppWizard已经比较好用,用户可以轻松的创建各种项目常规界面。 比如早期创建一个支持滑动的主界面框架,并且可以跳转各种子界面,仅仅界面布局和各种图片格式转换都要花不少时间,而现在使用AppWizard,可以说轻轻松松,毫不费力。 用户唯一要做的就是根据自己的芯片性能做一定的速度优化。 视频: https://www.bilibili.com/video/BV17Rp3eLE

滚雪球学MyBatis(01):教程导读

MyBatis简介 前言 欢迎回到我们的MyBatis系列教程。在上期的内容中,我们详细介绍了MyBatis的基本概念、特点以及它与其他ORM框架(如Hibernate)的对比。我们还探讨了MyBatis在数据访问层中的优势,并解释了为什么选择MyBatis作为我们的持久化框架。在阅读了上期的内容后,相信大家对MyBatis有了初步的了解。 在本期内容中,我们将深入探讨MyBatis的基本配

python+selenium2轻量级框架设计-01框架结构

接下来会介绍一个比较简单的框架结构,先看一下分类 config文件夹里放的是配置文件 framework文件夹里面放的是公共类,常用类,还有读配置文件类、日志类、截图类、发送邮件、生成测试报告、操作读取数据库、读取Excel等,后面几篇会一一介绍 logs文件夹存放生成的日志文件 pageobject存放页面类包括元素的定位等 screenshots文件放的是生成的截图 test_

python+selenium2学习笔记POM设计模式-01模式简介

Page Object模式是Selenium中的一种测试设计模式,主要是将每一个页面设计为一个Class,其中包含页面中需要测试的元素(按钮,输入框,标题 等),这样在Selenium测试页面中可以通过调用页面类来获取页面元素,这样巧妙的避免了当页面元素id或者位置变化时,需要改测试页面代码的情况。 当页面元素id变化时,只需要更改测试页Class中页面的属性即可。 Page Object模式是

从应用内跳转至外部浏览器 - 鸿蒙 HarmonyOS Next

从应用内跳转至外部浏览器,基于 Want 来实现,同时也可以通过其方式尝试跳转至其它系统模块,具体可参考如下 code : 方法调用 // 调用pushOutsideWeb(controller, url) 方法实现 import { common, contextConstant, Want } from '@kit.AbilityKit';import { HintMessage