首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何通过按钮关闭和重新打开viewController?

在iOS开发中,可以通过按钮关闭和重新打开viewController。下面是一种常见的实现方式:

关闭viewController:

  1. 在你的viewController类中,创建一个IBAction方法,用于响应关闭按钮的点击事件。
  2. 在该方法中,调用dismiss方法关闭当前的viewController。

示例代码:

代码语言:txt
复制
@IBAction func closeButtonTapped(_ sender: UIButton) {
    self.dismiss(animated: true, completion: nil)
}

重新打开viewController:

  1. 首先,确保你的viewController是通过present方法被打开的。
  2. 在你的viewController类中,创建一个IBAction方法,用于响应重新打开按钮的点击事件。
  3. 在该方法中,重新调用present方法打开当前的viewController。

示例代码:

代码语言:txt
复制
@IBAction func reopenButtonTapped(_ sender: UIButton) {
    let viewControllerToOpen = self.storyboard?.instantiateViewController(withIdentifier: "YourViewControllerIdentifier") as! YourViewControllerClass
    self.present(viewControllerToOpen, animated: true, completion: nil)
}

请注意,上述示例代码中的"YourViewControllerIdentifier"和"YourViewControllerClass"需要替换为你实际使用的viewController的标识符和类名。

这种方式适用于使用Storyboard创建的viewController。如果你使用纯代码创建viewController,可以使用类似的方法,只需稍作调整即可。

对于更复杂的场景,你可能需要考虑使用导航控制器(UINavigationController)或其他容器视图控制器来管理视图控制器的打开和关闭。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

MySQL是如何打开关闭表?

Flush tables,看下MySQL是如何打开关闭表的; MySQL是多线程的,因此可能有许多客户端同时为给定表发出查询。...该table_open_cache max_connections系统变量影响服务器保持打开的文件的最大数量。...MySQL可能会临时打开更多表来执行查询 在以下情况下,MySQL关闭未使用的表并将其从表缓存中删除: 当缓存已满并且线程尝试打开不在缓存中的表时。...MyISAM将为每个并发访问打开 一个表。这意味着,如果两个线程访问同一个表,或者如果一个线程在同一查询中两次访问该表(例如,通过将表连接到自身),则该表需要打开两次。...如果要使用 HANDLER tbl_name 该语句打开表,则会为该线程分配专用的表对象。该表对象不与其他线程共享,并且在线程调用或线程终止之前不会关闭

3.5K40
  • 将模型添加到场景中 - 在您的环境中显示3D内容

    我们也熟悉了热门测试世界变换。现在,我们拥有显示虚拟对象所需的所有工具。在本教程中,我们将学习如何检索模型并使用按钮的触发器将其呈现在场景中。一旦显示,我们将隐藏焦点方块。...为此,请打开“ 助理”编辑器,该图标看起来像两个交织在一起的圆圈。现在,我们并排放置两个分屏,非常适合连接。在右侧,我们有ViewController.swift,在那里我们可以找到该出口的声明。...现在,关闭助理编辑。 添加按钮 我们想在视图中添加一个按钮,用作在场景中添加模型的触发器。从对象库中,将UIButton拖动到场景视图的顶部。...添加按钮功能 我们刚刚在屏幕上添加了按钮,但它根本没有做任何事情。当我们触摸它时,让按钮执行某些操作。现在,打开Assistant编辑器并控制将故事板中的按钮拖到ViewController类。...完成后,关闭“ 助理”编辑器。

    5.5K20

    iPad Safari多窗口视图分析实现思路

    Safari 是 iOS 系统自带的浏览器,支持打开多个网页窗口。在手机上,由于屏幕空间有限,点击窗口管理的按钮可以看到手机上采用了一种视图层叠的效果,有点模拟从一个实体文件夹中翻查文件的感觉。...[iPhone Safari 的多窗口管理] 而在iPad 上,同样的按钮打开的视图是一个大纲视图,所有的网页窗口平铺展示,就像桌面平台的多窗口管理 [iPad 上 Safari 的多窗口管理] 我们再认真观察一下...另外我们可以看到缩略图的顶部有一个标题栏一个关闭按钮,在双指缩放放大的过程中我们可以看到一个临界点,超过这个临界点的时候标题栏会渐隐,露出原本页面截图顶部的搜索栏标签栏。...他们的核心在于管理控制多个子级ViewController 的视图,通过自己定制创造一个新的Container View Controller我们可以做出不一般的交互,例如我们这次说的多窗口管理。...当从大纲视图回到具体页面,同样可以通过操作 zoomScale contentOffset 来使得截图铺满视口,完成后再操作实际 ViewController 的 view 带到视图顶层,再把截图卸载

    4K30

    【 iOS 应用开发 】 UIKit 控件 ( UIView 属性 | storyboard 设置 | 模拟器 | 拖线关联 | tag | 软键盘操作 | 颜色值 | 代码生成控件 | 动画设置 )

    设置资源 | ② 按钮状态背景 | ③ tag 设置 | ④ 多按钮绑定同方法 ) ( 6 ) 关闭自动布局 ( ① 选中 ViewController | ② 文件查看器 | ③ 取消 Use Auto... ViewController.m ; 4.ViewController.h 代码 : // // ViewController.h // Caculater // // Created by...TextField 控件 关闭键盘; ② 通过 父控件 关闭 软键盘; ① 谁触发谁关闭 : 调用控件的 resignFirstResponder 方法 退出软键盘, 该方法只能关闭控件本身触发的软键盘..., 示例 [self.textField resignFirstResponder] 关闭 textField 属性对应的控件触发的软键盘; ② 通过父控件关闭 : 调用界面的根节点 view 的 endEditing..., ---- ( 6 ) 关闭自动布局 ( ① 选中 ViewController | ② 文件查看器 | ③ 取消 Use Auto Layout 勾选 ) 关闭自动布局 : 如果 无法 控制

    4.8K30

    IOS开发之TabBarItem&NavigationBarItem

    下面将会结合一个实际的效果来简单的介绍一下TabBarNavigationBar, 然后说一下用我们的storyboard纯代码如何配置我们的NavigationBar, 上一篇博客中提到了如何用Navigation...视图关系说明:     1.当打开时首先会出现一个登陆页面,当登陆成功后会跳转到Tab Bar Controller中。     ...3.每个Navigation Controller中又对应着一些ViewController, 这些ViewController之间我们可以通过按钮控制NavigationController来进行切换...登陆界面中所用的控件键盘如何收回的,在前面的博客中都有所提及在这就不做赘述。...我们可以通过storyboard通过拖拽的方式来配置我们的NavigationBar 也可以通过手写代码的方式进行配置:     (1)用storyboard来为我们的Navigation Bar添加按钮

    1.4K80

    iOS开发系列——Storyboard

    b.png 要实现这个登录,那么接下来就是事件属性绑定的问题,大家应该可以猜到登录的逻辑代码肯定在ViewController.m中编写,那么storyboard文件是如何关联到这个类的呢?...ViewController关联在一起。...那么如何在代码中读取两个TextField的值并通过点击按钮触发相关事件验证登录合法性呢?...要想在代码中使用UITextField,并且添加按钮点击事件,则必须在ViewController.h中定义两个UITextField属性一个登录方法。...只是当你定义为IBAction在Interface Builder中可以关联到某个控件的事件方法(后面的关联操作将会看到,而且我们在代码中也可以看到代码前面多了空心圆点); 下面看一下storyboard中的控件代码中定义的属性事件如何关联

    3.2K40

    iOS中的「回调(callback)」

    代码」一个特定的事件(event)联系起来,当特定事件(event)发生后,这段「代码」被执行。...打个比方,我想用淘宝APP帮手机充值,一打开APP,它并不会马上跳到充值页面,是要等待我的点击事件,当点击了充值的按钮,才会跳到充值页面(执行了callback)。...常见的就是「delegates/委托」「/data sources数据源」。下面我们来动手实现一下「delegates/委托」。...如果有这个疑问,可以移步到我在知乎回答的问题:如何用简单明了的话解释一下什么是 Objective-C 中的委托?或许可以解答你的部分疑问。...至于「data sources/数据源」,常用UITableView的朋友,应该比较熟悉了,本质上上面讲的委托,一回事儿。

    3.4K30

    iOS 9 Storyboard 教程(二下)

    当用户点击Cancel按钮的时候,这个控制器将会关闭并且不管你输了什么数据都不会保存.这个部分用unwind segue已经起作用了....但是当用户点击Done按钮的时候,你应该创建创建一个新的Player 对象并且填写它的属性更新�玩家的清单....直到你segue他们,其他的viewController才被实例化.当你关闭这些viewController的时候,他们就立即被释放了.所以只有使用的ViewController才存在内存中....(coder:)deinit方法,并且让它们在Xcode控制台输出了一条信息.现在再一次运行app,然后打开Add Player控制器,你应该看到这个viewController没有得到分配直到它打开的时候...当你关闭 Add Player控制器,也点击了CancelDone按钮的时候,你应该会看到deinit里print()方法输出地状态信息.如果你再一次打开了这个控制器,你应该也会再一次看到从init?

    2.2K10

    iOS逆向(8)-Monkey、Logos

    本文会对优酷的设置页面增加一个开启/关闭屏蔽广告的Cell(仅UI)。效果可见下文配图。...支持调试自己编写的动态库第三方App 支持通过CocoaPods第三方应用集成SDK以及非越狱插件,简单来说就是通过CocoaPods搭建了一个非越狱插件商店。...#import 由于咱们手上有源码,所以可以直接跳过动态分析的这一步,直接就知道按钮所处的页面是叫做ViewController按钮的响应方法是: - (IBAction...我们现在要做的就是在这个页面的TableView的最后一行加上Cell,里面有个Switch,用于打开/关闭屏蔽广告功能(只是UI,这篇文章不牵扯到屏蔽广告的具体实现,如果你需要,点个小心心,持续关注我哦...6、为什么Monkey这么牛逼 查看重新编译后的app文件,可以发现其中的Framework多了很多东西: ?

    1.8K20

    Git在Xcode中的配置与使用常见问题总结

    书接上回提出的Git在Xcode中的配置与使用常见问题4个问题 问题1,如何在Xcode中创建代码库,并添加提交代码到代码库? 问题2,如何在Xcode中提交推送给远程服务器代码库?...问题3,如何在Xcode中克隆远程服务器代码库到本地? 问题4,如何使用Xcode获取远程代码库数据,并解决冲突问题?...在Xcode中可以通过菜单Window → Organizer,选中Repositories→myrepo→Remotes,点击左下角的“Add Remote”按钮,弹出对话框,在Remote Name...创建完成再重新推送,如果弹出对话框,Push按钮是可以点击的,点击Push按钮推送。 ?...4、问题4 如果服务器代码有新的版本,获取远程代码库数据到本地,可以通过菜单File→Source Control→Pull…。然后会弹出对话框。选择Choose按钮就可以获取新的版本了。 ?

    3.5K110

    添加多个屏幕-创建格线布局

    在上一节中,我们学习了如何使用按钮更改iPhone的屏幕。让我们进一步推动!我们将实现一个CollectionView,我们将能够切换到您想要的壁纸。该的CollectionView将是滚动的水平。...然后,打开主故事板并启用助理编辑器。单击第二个View Controller的顶部,转到Identity Inspector并将其Class更改为DialogViewController。...让我们调用cellscreenImageButton并通过调用其索引路径来注入数据数组。...关闭 Collection View 当我们点击按钮时,我们想要关闭Collection View。转到主故事板,启用Assistant Editor,从按钮创建IBAction。...我们学到了很多关于如何实现Collection View的知识。我们还学会了如何委派。这是ARKit 2扩展的结束,我们已经走了很长的路!我希望你喜欢这门课程!

    2.9K40

    iOS 如何给Xcode项目添加“.pch”文件

    解释为“预编译头文件; 由编译器在建立工程时自动生成;其中存放有工程中已经编译的部分代码;在以后建立工程时不再重新编译这些代码” 1.首先打开你的项目(演示使用一个空的项目),按照以下步骤即可 ?...2.选择"iOS" -->> “PCH File”,点击右下角的“Next”按钮,进入下一步。 ?...PS:这里解释一下“$(SRCROOT)”的意思,它代表的是工程的根目录,即相对路径,使用这一相对路径的好处就是,即使项目被移动位置,也不需要重新配置“Prefix Header”这一路径;如果不适用相对路径...添加路径 7.接下来可以验证一下,是否成功加入.pch文件 在Test.pch 文件中,添加下面的代码 #import "ViewController.h" 然后打开AppDelegate.m文件,添加下面的代码...ViewController *viewController = [ViewController new]; 不报错,即完成。

    2.2K20

    iOS 仿支付宝银行卡界面(支持SwiftOC)

    初始化WalletView并加载钱包头部视图walletHeader 在需要加载钱包的地方初始化WalletView,并自定义头部视图walletHeader卡片视图,Demo 中以ViewController...() } } 在ViewController按钮的触发事件addCardButtonClick方法中调用insert方法代码如下: @objc func addCardButtonClick...在钱包视图中实现卡片展示隐藏回调方法 在钱包视图中实现卡片展示隐藏回调方法,在展示状态下,需要隐藏掉添加卡片按钮,禁止继续添加卡片,并且显示卡片详细设置内容删除按钮。...在隐藏状态下,需要恢复添加卡片按钮,并且隐藏卡片详细设置内容删除按钮,核心源码如下: public var didPresentCardViewBlock: PresentedCardViewDidUpdateBlock...导入项目使用介绍 最后介绍一下该如何在项目中导入该功能,下载Demo,将Demo中的FBYBankCard.framework文件ColoredCardView.swift文件导入项目中,在需要加载的页面中直接引用即可

    1.4K20

    WWDC2016 Session笔记 - iOS 10  推送Notification新特性

    苹果地图:有点类似Siri照片的更新,苹果地图也增加了很多预测功能,例如苹果地图能够将提供附近的餐厅建议。苹果地图的界面也得到了重新设计,更加的简洁,并增加了交通实时信息。...最后,通过contentHandler回调,把它传递给iOS系统,iOS 系统就会展示给用户。 ? 通过以上的设置,我们就能在推送中看到丰富的媒体信息了。用户并不需要去打开app,也不用去点击下载。...接下来我们就来说说如何自定义界面 1. 推送的四部分 先来看一个日历的推送例子: ? 上图,整个推送分4段。用户可以通过点击Header里面的icon来打开app,点击取消来取消显示推送。...我们可以通过平时我们Resize其他ViewController一样,来Resize这个ViewController。来看看如下的代码。...如果此时用户还想输入写文字来评论这条推送,我们该如何做? 这个输入文字的需求是来自于iOS 9 。这个的使用方法9是相同的。

    86820
    领券