模态 Segue 链

2024-04-13

我有一个具有登录视图的 iOS 应用程序(LognnViewController),一旦用户成功通过身份验证,他们就会被带到另一个视图(DetailEntryViewController)输入一些简单的详细信息。
输入详细信息后,用户将进入应用程序的主要部分,其中包含选项卡控制器(TabViewController)持有各种其他观点。 LogInViewController 执行模态转场DetailEntryViewControllerDetailEntryViewController然后对 TabViewController 执行模态转场,这样我就有了一种进入应用程序的模态转场链。当用户注销时,我想一路返回 LogInViewController 但当我执行以下操作时:

[self.presentingViewController dismissModalViewControllerAnimated:YES];

...它弹出 TabViewController,我最终回到了DetailEntryViewController而不是第一个 LogInViewController。有什么方法可以让我轻松地弹回到第一个视图控制器,或者做这个模态转场链会阻止我这样做。我想到了一个好主意,将一些代码放入DetailEntryViewController viewWillAppear:如果用户已注销,则会自动弹出,但显然不允许调用来关闭模态控制器viewWillAppear: viewDidLoad:, etc.

关于如何实现这一点有什么想法吗?


我认为这不是实现您的应用程序的最佳结构。模态控制器应该用于临时中断程序流程,因此使用模态来获取主要内容并不理想。我这样做的方法是使您的选项卡栏控制器成为窗口的根视图控制器,然后在第一个选项卡的控制器中,通过 viewDidAppear 方法以模态方式呈现登录控制器,因此它将立即出现(您将简要地看到第一个选项卡的视图,除非您取消选中 segue 属性检查器中的“动画”框)。显示该控制器中的详细信息控制器,然后关闭两个模式控制器以返回到您的主要内容。当用户注销时,只需再次显示该登录控制器即可。我是这样实现这个想法的。在第一个选项卡的视图控制器中:

- (void)viewDidLoad {
    [super viewDidLoad];
    _appStarting = YES;
}

-(void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];
    if (_appStarting) {
       [self performSegueWithIdentifier:@"Login" sender:self];
        _appStarting = NO;
    }
}

然后在最后一个(在你的情况下是第二个)模态视图控制器中,我有一个按钮方法:

-(IBAction)goBackToMain:(id)sender {
    [self.view.window.rootViewController dismissViewControllerAnimated:YES completion:nil];
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

模态 Segue 链 的相关文章

  • 根据 iOS 6 通讯录使用文档,第 22 条规则

    根据 iOS6 的文档 应使用 ABAddressBookCreateWithOptions 创建地址簿 它还表示如果调用者无权访问数据库 则此方法将返回 null 但是 访问是通过调用 ABAddressBookRequestAccess
  • 具有多个项目的工作空间还是一个具有多个目标的项目?

    我有 4 个 iOS 应用程序 它们都很相似 它们是闪存卡应用程序 每个应用程序都有不同的主题 他们共享很多课程和图像 现在我将所有 4 个项目作为单独的项目 但我希望简化维护并共享资源 将所有 4 个项目放在同一个工作区中更好 还是将 4
  • 如何在半屏上呈现 ViewController

    我有一个UIViewController其中只有一个UIView从底部覆盖了 viewController 的 1 3 像这样 我想在另一个 ViewController 上呈现这个 viewController 它应该从底部动画显示 并且
  • 使用 NSPredicate 进行过滤,用于数组内字典内数组的数组计数

    我有如下格式的数组 xyz Array with different values many more keys same as above dictionary many more dictionaries 在这里看 我有字典的主数组 其
  • Xcode 项目/应用程序名称带有空格问题 - 找不到框架

    Xcode 6 1 是否可能因为我的 3 个单词应用程序名称而找不到我之前导入的框架 我正在使用 Parse 从来没有遇到过任何问题 但实际上 当我在 Xcode 中打开我的项目时 我收到一个错误 提示框架未找到 这是荒谬的 因为它之前运行
  • 等到使用removePendingNotificationRequests删除来自UNUserNotificationCenter的本地通知 ios 10 swift 3

    使用新的本地通知UNUserNotificationCenter 我尝试删除带有一些标识符的通知 UNUserNotificationCenter current removePendingNotificationRequests with
  • MKMapView 未在平移上调用 RegionDidChangeAnimated

    我有一个带有 MKMapView 的应用程序和每次地图更改位置 在 RegionDidChangeAnimated 中 时调用的代码 当应用程序最初加载时 在显式更新地图坐标的平移 滑动 捏合 点击和按钮上调用regionDidChange
  • Firebase持久化,清除Firebase缓存

    我的应用程序使用 Firebase 来同步和恢复数据 我用setValue withCompletionBlock 插入 更新和删除 Firebase 对象的方法 每当有 CoreData 保存时就会调用此方法 从而将我的所有本地更改同步到
  • 在 iOS 框架中嵌入框架

    我有一个包含另一个目标 框架 的项目 它是主项目的依赖项 该框架需要它自己的框架 因此我使用 carthage 添加了它们 该项目在模拟器上编译并运行良好 但是在物理设备上运行时出现以下错误 dyld Library not loaded
  • iOS:无法让蓝牙管理器工作

    警告 我知道私有框架不会在 App Store 中流行 我尝试使用 BluetoothManager 框架来让我 1 检查设备上是否启用了蓝牙 2 如果未启用 则将其打开 我可以按照找到的说明成功加载蓝牙管理器here https stac
  • Phonegap html5视频无法播放

    我正在尝试在 iPad 上的phonegap 应用程序中播放视频 该视频给了我错误 MEDIA ERR SRC NOT SUPPORTED 我尝试播放的视频不是本地的 当我在该视频上使用curl I 时 这是它带来的信息 HTTP 1 1
  • 前导点的自动完成功能无法快速工作

    当我尝试在 swift 中使用 前导点语法 时 我没有得到任何自动完成建议 是否没有实现此自动完成功能 或者是我的 Xcode 版本 6 3 1 有问题 例如 当我尝试这样的事情时 let col UIColor whiteColor 在我
  • 使用 Swift 获取 UITableViewCell 中 UITextField 的 indexPath

    因此 我正在构建一个详细视图控制器应用程序 它显示一个包含两部分单元格的表格 标签和文本字段 我正在尝试检索文本字段值并将其添加到数组中 我尝试使用 textField superview superview 技术 但没有成功 func t
  • 原生编程对于移动开发有何优势?

    我需要为一家公司在一些主要的移动操作系统上开发应用程序 特别是 iOS Android 和 WP7 我最初计划为三种不同的操作系统编写三个独立的应用程序 每个应用程序都使用本机 SDK 然而 这样做有什么好处吗 有许多可用的跨平台工具 Se
  • 检测wifi是否启用(无论是否连接)

    对于 GPS 跟踪应用程序来说 在打开 WIFI 的情况下记录位置信号会导致数据非常不精确或存在间隙 在开始跟踪之前 我已使用可达性查询来检测 wifi 是否可用 问题是 如果进行该查询时 wifi 已启用但未连接到网络 则表明无法通过 w
  • 使用iOS类别创建新颜色

    我想创造一些新的UIColor我的应用程序中始终使用的 s RGB 有时会稍微调整 确切的颜色阴影正在争论中 目前 我必须从 RGB 创建新颜色 并且代码遍布各处并重复 有没有更好的方法可以创建一种新的颜色并在我的应用程序中使用它 UICo
  • 为什么 Swift UITableViewController 模板在 tableView cellForRowAtIndexPath 方法中使用可选参数?

    如果您创建新的 UITableViewController 类 您将看到重写的注释方法 override func tableView tableView UITableView cellForRowAtIndexPath indexPat
  • 使用 addObserverForName:usingBlock 时删除观察者

    我有以下代码 在视图加载中添加观察者 void viewDidLoad super viewDidLoad NSNotificationCenter defaultCenter addObserverForName com app live
  • 将视图控制器推送到 UINavigationController 中

    我有一个带有导航控制器的选项卡视图控制器 在第一个选项卡项中 我单击视图中的按钮 弹出一个带有动画的视图 是 然后 当该视图完成后 我点击另一个按钮将其关闭 喜欢 self dismissViewControllerAnimated NO
  • 在 Monogame 和 UIKit 之间切换

    我一直在搜索和搜索 但似乎找不到适合我想做的事情的解决方案 而且我几乎已经到了不得不问它是否可能的地步 我正在使用 Xamarin Studio 开发 iOS 应用程序 我有几个不同的屏幕设置为 UIViewController 它们运行良

随机推荐