更改子视图控制器

2023-11-27

我有一个视图控制器,当我按下按钮时,会出现一个子视图控制器。这工作得很好,但如果我按下其中的下一个按钮来执行两步登录,我想将此子视图控制器更改为另一个子视图控制器。 任何想法?因为从主视图控制器我知道如何显示孩子,但从孩子我不知道该怎么做。


如果使用故事板,您可以创建自己的子替换segue,例如:

替换Segue.h

@interface ReplaceSegue : UIStoryboardSegue

@end

替换Segue.m

@implementation ReplaceSegue

- (void)perform
{
    UIViewController *source = self.sourceViewController;
    UIViewController *destination = self.destinationViewController;
    UIViewController *container = source.parentViewController;

    [container addChildViewController:destination];
    destination.view.frame = source.view.frame;
    [source willMoveToParentViewController:nil];

    [container transitionFromViewController:source
                           toViewController:destination
                                   duration:0.5
                                    options:UIViewAnimationOptionTransitionCrossDissolve
                                 animations:^{
                                 }
                                 completion:^(BOOL finished) {
                                     [source removeFromParentViewController];
                                     [destination didMoveToParentViewController:container];
                                 }];
}

@end

然后,您可以打开故事板,将容器视图放置在容器视图控制器上,并在子控制器上放置从第一个子场景到第二个子场景的自定义 Segue。您需要指定ReplaceSegue两个子场景之间的自定义 Segue 的类:

container controller storyboard

请注意,如果您在第二个子视图上正确使用了自动布局或自动调整大小,则一切都会正常工作(特别是在手动设置目标控制器视图的框架时)ReplaceSegue)。但在 Interface Builder 中,第二个子场景的布局看起来不太正确,并且可能使场景的正确设计有点尴尬,因为(至少从 Xcode 4.5 开始)第二个子场景的“模拟指标”场景不能很好地推断适当的大小。因此,您可能应该将第二个子场景的模拟指标大小从“推断”更改为“自由形式”,然后手动调整第二个子场景的大小:

container storyboard with manually adjusted second child scene size

这不是非常优雅的 Xcode 体验,但它确实有效。如果您正确使用自动布局或自动调整蒙版大小,则可以非常优雅地处理细微变化。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

更改子视图控制器 的相关文章

  • iOS 自定义滑块删除两端的最小和最大空间

    我正在尝试使用自定义滑块 class MySlider UISlider override func trackRect forBounds bounds CGRect gt CGRect let customBounds CGRect o
  • 如何使用 iOS 可达性

    我正在开发一个使用网络的 iPhone 应用程序 iPhone 通过 HTTP 请求与我的服务器通信 并且应该可以在 WiFi 和 3G 上运行 我目前使用NSURLConnection initWithRequest向我的服务器发送异步请
  • 使用 UItableviewCell 实现 Google 地图

    我正在尝试在 UItableviewCell 组件内实现谷歌地图 我这样做的方法是在原型单元中定义 GMSMapView 然后使用 dequeueReusableCell 方法配置地图单元 但是 我尝试应用的任何更改都会失败 例如添加标记
  • 如何在 Swift 中使用indexesOfObjectsPassingTest:

    IndexOfObjectsPassingTest 的声明在 Swift 中看起来像这样 func indexesOfObjectsPassingTest predicate AnyObject Int CMutablePointer
  • 如何在 iOS 中通过 Twitter API 获取用户电子邮件地址?

    我尝试了多个 SDK 但无法从任何资源获取电子邮件 ID 我努力了FHSTwitterEngine为此目的 但我没有得到解决方案 FHSTwitterEngine twitterEngine FHSTwitterEngine sharedE
  • Cordova 2.4.0 或 2.5.0 或 2.6.0 和 requirejs

    Cordova 2 4 0 及更高版本支持 AMD 加载到 javascript 中 我特别希望将 Cordova 2 5 0 与最新版本的 RequireJS backbone jquery jquery mobile 一起使用 我还没有
  • Swift SpriteKit edgeLoopF​​romRect 问题

    下面的代码可以识别底部和顶部边缘场景和球按预期弹开 但是 那左边缘和右边缘现场的情况一直被破坏 如果施加足够的力 球会离开屏幕 然后最终返回 就好像场景的边缘超出了 iPhone 模拟器窗口的边缘 import SpriteKit clas
  • 从一个模态视图无缝翻转到另一个模态视图,而不显示纯色背景

    我的 iPad 应用程序的 UI 如下 当我点击Settings按钮 我希望对话框水平翻转以显示设置对话框 我这个工作正常 但是 当对话翻转时会显示背景颜色 如你看到的 有什么办法可以让对话框翻转时不显示该颜色块吗 我希望它看起来更加无缝
  • 每 24 小时触发一次方法

    我正在尝试每天在给定时间触发一个方法 我尝试了一些方法 但我无法真正使其发挥作用 任何意见 将不胜感激 此外 如果无论应用程序是否打开它都会触发 那就更理想了 这可能吗 UI本地通知 http developer apple com lib
  • (Kiss)XML xpath 和默认命名空间

    我正在开发一个 iPhone 项目 需要解析一些 xml xml 可能包含也可能不包含默认名称空间 我需要知道如何解析 xml 以防它使用默认命名空间 由于我需要读取和写入 xml 因此我倾向于使用 KissXML 但我愿意接受建议 这是我
  • 使用未解析的标识符“FlurryAdInterstitial”

    我正在尝试整合Flurry Interstitial Ads使用cocoapods in Swift and Xcode 7 1 1 我正在关注开发人员雅虎网站上的此文档 https developer yahoo com flurry d
  • 如何让UITextView背景线与文字对齐?

    我正在尝试绘制 UITextView 的背景线 这是我用来画这些线的代码 CGContextBeginPath context CGContextSetStrokeColorWithColor context self horizontal
  • 从命令行添加 Xcode 开发者帐户

    我正在尝试使用xcodebuild allowProvisioningUpdates在我只能通过命令行访问的计算机 Azure Devops macOS 托管计算机 上 不幸的是 根据man xcodebuild为了使用 allowProv
  • UIViewControllerAnimatedTransitioning:旋转更改后黑屏片段

    我已经创建了一个视图控制器转换 只要我不更改设备方向 一切都正常 图 1 显示了应有的屏幕 然后我切换到下一个视图控制器 在其中更改方向 现在我回到第一个视图控制器并再次切换方向 然后我得到的结果如图 2 所示 出现黑色边框 请不要介意屏幕
  • iOS 7 上 Safari 浏览器的用户代理

    我只想在带有 Safari 浏览器的 iPhone 和 iPod 中打开我的网站 对于 Chrome Dolphin 等任何其他浏览器 它不应该打开 但目前我从几乎所有设备获得相同的用户代理 对于Safari User Agent Stri
  • 如何向标准 UIButton 添加徽章? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 是否可以在标准中添加看起来标准的徽章UIButton 如果不支持半原生 那么实现此目的最简单的方法是什么 示例图片 这是 Sascha
  • 访问目标 c 中的类方法。使用 self 还是类名?

    我正在学习 iOS 编程 并且对以下有关关键字 self 的使用的代码感到困惑 据我了解 self就像Java的this 它指的是当前实例 当我想调用类方法时 通常的方式应该是这样 PlayingCard validSuits 但是侵入实例
  • 如何在代码中编辑约束

    我有一个以 100 开始宽度限制的网页 当用户单击按钮时 我想将约束更改为 200 我试过这个 NSLayoutConstraint constrain NSLayoutConstraint constraintWithItem self
  • TableViewController 的 viewDidLoad 未触发

    我一直在关注这个tutorial http www appcoda com ios programming sidebar navigation menu 有一个滑出式菜单 我添加了一个 TableViewController 它将显示文章
  • 像 TraceGL 一样分析 Objective C 中的代码路径?

    TraceGL 是一个非常简洁的项目 它允许 JS 程序员跟踪 Javascript 中的代码路径 它看起来像这样 我想为 Objective C 构建类似的东西 我知道运行时使跟踪方法调用变得相当容易 但是我如何跟踪控制流 例如 在上面的

随机推荐

  • 指向数组第一个元素之前的指针

    在 C 语言中据说当指针引用同一个数组或超出该数组末尾的一个元素时 算术和比较就得到了明确的定义 那么数组第一个元素之前的一个呢 只要我不取消引用它就可以吗 Given int a 10 p p a 1 这样写是否合法 p 2 这样写是否合
  • 禁用菜单按钮?

    我有一个自定义菜单选项 如果单击屏幕上的按钮 我想禁止它弹出 我想过使用这段代码 但它不起作用 Override public boolean onPrepareOptionsMenu Menu menu if Schedule menu
  • 页面刷新再次触发该事件

    在asp net中 当我提交表单并刷新它时 数据再次重新提交 C 有没有办法在页面加载时捕获页面刷新事件 ASP NET 没有提供直接执行此操作的方法 另一方面 有一些技巧可以避免重复提交 提交后重定向 这是最糟糕的 即使它避免了重复提交
  • C++:指针向量在push_back()之后失去引用

    在我的代码中 有一个 Node 对象的全局向量和一个 Node 指针的本地向量 include
  • 使 TabControl 标头在 WPF 中可滚动

    正如标题中提到的 我想将 TabControl 的标题更改为可滚动 原因 我有太多 tabItems 并且换行对于我来说不是最好的解决方案 所以我想将其更改为 类似的东西 由箭头指示的滚动条 谁能帮助我并展示如何做到这一点 我使用的是wpf
  • 使用 VS2010 的混合 C# C(win32) 项目中没有加载任何符号

    我的项目有几个新的 C 模块和一个使用 win32 系统调用编译的 C 模块 不是 C 我使用 PInvoke 互操作层从 C 调用 C 代码 C 函数正在被调用 所有模块都写入单个 bin 目录并写入 pdb 文件 在运行时 然后在调用
  • 如果启动的进程打开,则应用程序退出后套接字不会关闭

    我的 C net 应用程序当前执行以下操作 除其他外 创建一个线程 在特定端口上打开套接字并等待指令 消息传入 套接字线程读取消息并引发事件 事件处理程序调用必要的函数来解析消息并执行必要的操作 例如启动应用程序 指定的外部 应用程序 异步
  • OpenHTMLToPDF:将自定义字体嵌入到由 HTML 创建的 PDF 中

    我使用 Jsoup 从 HTML 创建 PDF 并打开HTML转PDF 我必须在 PDF 中使用不同的字体来覆盖非拉丁字形 请参阅here 如何正确嵌入我的字体 重现问题的简化程序 src main resources test html
  • Json.Net 在序列化时弄乱了 DateTimeOffset 的时区

    我看过很多相关的问题 但似乎没有一个对我有用 我正在尝试以 UTC 格式序列化所有内容 这是我的代码 class Class1 static void Main Class2 foo new Class2 JObject json JObj
  • 如何获取 Angular $interval 的状态 - 检查间隔是否已取消

    我是 Angular 和 JS 的新手 有点困惑 我用以下命令启动计时器 var getOverviewMapTimer interval scope UpdateOverviewMap UPDATE FREQUENCY 而且 如果我理解的
  • 获取拖放到字段上的资源的 URL

    我有一个带有特定输入字段的 html 页面 我想添加以下功能 用户应该能够将资源拖放到字段上 此操作的结果应该是该资源的 url 出现在该字段中 该资源可能是本地文件 导致像这样的 urlfile home me document or f
  • C# 列表仅包含

    希望找出是否有一种简单的方法来检查列表是否只包含某些列表值 例如 如果我有一个可以随机包含不同整数 1 10 即 1 3 7 或 2 3 4 6 8 9 的 int 列表 并且我想检查该列表是否仅包含 int 1和 或 5 1 或 5 或
  • PHP 访问另一个类中的类

    所以我有两个这样的课程 class foo code here foo new foo class bar global foo public function bar echo foo gt something 我想在所有方法 bar 中
  • 在seaborn条形图中绘制百分比

    对于数据框 import pandas as pd df pd DataFrame group list AADABCBCCCD Values 1 0 1 0 1 0 0 1 0 1 0 我正在尝试绘制一个显示时间百分比的条形图A B C
  • 403 tweepy 错误

    我正在尝试使用 tweepy 来使用 Python 操作 Twitter 帐户 但我似乎在第一个障碍上就失败了 无论我尝试什么 我都会收到 403 错误 但没有具体细节 import tweepy Consumer keys and acc
  • 谷歌地图:检索附近地铁站的纬度和经度?

    当查看纽约的谷歌地图时 我们可以看到很多地铁站 如何获取附近地铁站的数据 例如 我发送一个包含我所在位置的经纬度和距离半径的请求 它会返回给定距离内的地铁站 您可以使用地方图书馆为了这 通过喂养type进入请求 您可以查看支持的类型在这里
  • JavaScript 确认取消按钮不会停止 JavaScript

    我有一个删除按钮 该按钮与我所拥有的页面上的一些评论相关联 当您单击删除按钮时 我试图弹出一个确认对话框 询问您是否确定要删除评论 单击 确定 应运行删除注释的功能 单击 取消 不应运行该功能 而只是关闭对话框 这是我的代码 onclick
  • 为什么你应该更喜欢未命名的命名空间而不是静态函数?

    C 的一个特性是能够创建未命名 匿名 名称空间 如下所示 namespace int cannotAccessOutsideThisFile namespace 您可能会认为这样的功能毫无用处 因为您无法指定名称空间的名称 所以不可能从外部
  • 从二进制 dll 文件中删除 C++ 类名

    我在 Visual Studio 2010 下有一个 C 项目 它编译成 dll 我在我的项目中定义了几个私有的特定于实现的类 例如CMyClass 该类不是从 dll 或任何接口函数导出的 但是 当我检查生成的dll文件时 其中存储了一个
  • 更改子视图控制器

    我有一个视图控制器 当我按下按钮时 会出现一个子视图控制器 这工作得很好 但如果我按下其中的下一个按钮来执行两步登录 我想将此子视图控制器更改为另一个子视图控制器 任何想法 因为从主视图控制器我知道如何显示孩子 但从孩子我不知道该怎么做 如