ios7 navigationController PushViewController 动画错误

2024-05-18

看来我在 navigationController PushViewController 方法中发现了一个错误。为了重新创建它,我采用了示例主详细信息项目并对-didSelectRow: method:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    DetailViewController* view = [self.storyboard instantiateViewControllerWithIdentifier: @"view"];
    NSDate *object = _objects[indexPath.row];
    [view setDetailItem:object];
    [self.detailViewController.navigationController pushViewController:view animated:YES];
}

我还将详细视图的情节提要 ID 更改为“视图”。发生的情况如下:

When selecting any of master's rows slowly (when the push animation has finished) it works fine: selecting rows slowly

If you select any of the rows while the animation is still showing, the detail view becomes inactive (shows the last row that was called with the push method before the bug) and only the navigation bar shows the push animation of a new view: selecting rows rapidly

发生这种情况时,您会在调试器输出中收到一些警告:

Finishing up a navigation transition in an unexpected state. Navigation Bar subview tree might get corrupted.

nested push animation can result in corrupted navigation bar

Unbalanced calls to begin/end appearance transitions for <DetailViewController: 0x8a6e070>.

这是令人讨厌的部分:如果您返回详细信息视图的导航栏,然后在主视图的表格视图中选择不同的行,或者在详细信息中返回两次,应用程序将崩溃

Can't add self as subview

但是,如果您在 ios6 上运行相同的代码,它可以正常工作,不会出现任何问题或警告。

目前的解决方案:

使用animated:NO调用该方法似乎没有任何问题,显然没有推送动画。

另一种解决方案是在 Master 中设置一个布尔值,在调用 Push 方法时将其设置为 false,并在 Detail 的 viewDidAppear 中将其设置为 true。这样你就可以在调用push方法时检查该值。缺点:如果您尝试快速选择同一行,则 tableView 可能会出现滞后,如果您快速选择不同的行,那么它不会显示在详细信息中,但它将在主 tableview 中被选中并突出显示,您可以保存所选行的索引并更改代码中的选择,但这会导致行突出显示闪烁。

这两种解决方案都涉及一些妥协,所以我想找到另一种方法来处理这个问题。还有更好的解决方案吗?


经过一些测试后发现,在 ios6 中,当选择 tableview 单元格并且推送被称为 tableview 集时.allowsSelection to NO直到推送结束。

这可以通过设置在 ios7 中轻松重现.allowsSelection to NO在push方法之后didSelectRowAtIndexPath:并在中进行回调didAppear:我们设置 tableview 的详细信息视图的方法.allowsSelection to YES在主视图中。

虽然这工作得很好,但当我一个接一个地快速选择两个不同的单元格时,我发现有点烦人,第二个单元格将被忽略。

因此,我已经设置,如果在推送动画尚未结束时选择另一个单元格,我会保存对新视图的引用,并在第一个动画结束后立即推送它。在我看来,通过这样做,tableView 的响应速度似乎更快了。

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

ios7 navigationController PushViewController 动画错误 的相关文章

  • 在 UIScrollview 上显示缩略图的最佳方法是什么(从服务器下载)

    我想在 UIScrollview 如照片应用程序 上显示许多图像 作为缩略图 所有图像将从服务器下载 据我所知 有几种选择 1 通过创建 UIImageviews 然后将它们添加为主滚动视图上的子视图 2 通过子类化一个UIView类 然后
  • 将 UIToolBar 添加到所有键盘(swift)

    我正在尝试以尽可能少的重复次数将自定义 UIToolBar 添加到我的所有键盘中 我目前的做法要求我将代码添加到所有 viewDidLoads 中 并将每个文本字段的委托分配给我正在使用的 viewController 我尝试创建自己的 U
  • 无法在 ios 应用程序中通过 googlecast 正确投射视频

    我正在开发一个基于 AVPlayer 的自定义视频播放器项目 尝试整合谷歌演员 我已经根据谷歌图进行了集成 https codelabs developers google com codelabs cast videos ios http
  • 错误消息:您输入的捆绑包 ID 已被使用

    我正在尝试发布一个 iPhone 应用程序 这不是第一个 我过去已经发表过其他的 因此 我在第一个和第二个表单中输入了所需的信息 然后填写了第三个大表单 您还可以在其中上传图标和屏幕截图 好吧 我在上传屏幕截图之前按下了 保存 按钮 因为我
  • 从未调用过交互式委托方法

    我想在 ViewController 1 和 NavigationViewController 2 之间进行交互式转换 NavigationController 通过按钮调用 因此呈现时没有交互转换 它可以通过按钮或 UIPanGestur
  • ABAddressBookCopyArrayOfAllPeople 中缺少联系人

    我试图从我的应用程序中的地址簿中查找电话号码 但很惊讶没有找到它 问题是 我已经在我的应用程序访问的控制台中打印了地址簿的所有号码 奇怪的是 有些联系人丢失了 我正在将输出与我的地址簿进行比较 虽然数量很少 但仍然如此 这就是我访问地址簿的
  • iPhone X 将对象底部与安全区域对齐会破坏其他设备上的外观

    关于 iPhone X 自动布局怪癖的问题 我有两个按钮 以前这些按钮将与超级视图底部对齐 偏移量为 20 以免它们接触屏幕底部 此后我将链接更改为安全区域而不是超级视图 Here s the original setup Looks go
  • Xamarin - 错误:dsymutil 退出,代码为 72

    最近升级到 VS for Mac 8 10 21 在构建应用程序时 我得到 Xamarin Shared targets 3 3 Error dsymutil exited with code 72 这是 Xcode 13 3 的情况 完整
  • 在 WKWebView 中禁用缩放?

    有谁知道在 WKWebView 中禁用双击和捏缩放的简单方法 我尝试过的任何方法都不起作用 Webview scrollView allowsMagnification false Error value of type WKWebView
  • 如何使用phonegap在iOS应用程序中防止键盘推送webview

    当屏幕底部的输入字段获得焦点时 键盘会向上推我的网络视图 并且页面的上部不再可见 我想防止键盘推高网络视图 有人有主意吗 对焦 设置window scrollTo 0 0 这可以防止键盘完全推高 webview input on focus
  • CATextLayer 上 iOS 6 中不需要的垂直填充

    背景 我在 iOS 5 中开始了我的项目 并构建了一个带有图层的漂亮按钮 我在按钮上添加了一个 textLayer 并使用以下代码将其居中 float textLayerVerticlePadding self bounds size he
  • 防止 iOS 键盘在 cordova 3.5 中滚动页面

    我正在使用 Cordova 3 5 和 jQuery mobile 构建 iOS 应用程序 我在大部分应用程序中禁用了滚动功能 但是 当我选择输入字段时 iOS 键盘会打开并向上滚动页面 我不想要这个功能 由于输入足够高 键盘不会覆盖它 我
  • 在 Objective-C 中的 Swift 类上调用 NSStringFromClass 返回模块损坏的名称

    我知道这个问题 https stackoverflow com questions 24107658 get a user readable version of the class name in swift in objc nsstri
  • 从现有坐标地图套件中查找最近的位置

    我正在为拥有多家商店的客户开发 iPhone 应用程序 目标 C 我有数组中所有商店 20 的坐标 纬度 长 目前我正在考虑循环遍历商店坐标数组并获取从用户当前位置到商店位置的距离 然后将它们添加到数组中并按最小距离进行排序 这是正确的方法
  • 无法将项目添加到 NSMutableArray ivar

    我的目标是将字符串添加到数组中 并在我调用的方法中执行此操作 在这个方法中 我在数组中得到一个空值 但不知道为什么 我在课程开始时有这样的内容 NSMutableArray listOfEvents 以及我在每个事件上调用的方法 void
  • 使用输入类型 = 文件捕获照片时移动 safari 崩溃

    我正在使用输入类型文件在 iOS 中启动相机 我正在使用以下代码行
  • Mac 上的 Delphi - 可能吗? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我负责一个 Delphi Win32 项目管理应用程序 我刚刚完成了向 Delphi 2009 的迁移
  • 使用强光混合模式时突出显示伪影

    我正在 iPhone 应用程序中使用顶部图像的 HardLight 混合模式混合两个图像 它看起来像这样 UIGraphicsBeginImageContext size sourceImage drawInRect rectangle b
  • 上传存档错误:“缺少 iOS 发行版签名身份......”

    我正在尝试使用 Xcode 将我的 iOS 应用程序存档上传到 iTunes Connect 但是当我单击 上传到 App Store 时 出现错误 Xcode 尝试查找或生成匹配的签名资产并 由于以下问题未能做到这一点 缺少 iOS 为
  • 如何在 UITableView 的 switch 语句中创建变量?

    我正在构建一个包含三个部分的 tableView 我已经完成了前两个工作 但最后一个有点阻力 我的问题似乎涉及尝试在 switch 语句中声明变量 实际上是嵌套的 switch 语句 据我所知 这不是一个好主意 但在这种情况下 这似乎是唯一

随机推荐

  • 如何将组合框放置在选项卡的标题中?

    是否可以在选项卡标题中显示组合框 如果是 extjs 组合则更好 我创造了jsfiddle 上的一个例子 http jsfiddle net andron v4ZzT 但存在这样的问题 1 无法显示Combo的选项列表 鼠标点击不起作用 2
  • Ruby 中的 DateTime.parse() 是否依赖于语言环境?

    我想知道以下示例的输出 解析时01 03 它会被解决为Mar 1st or Jan 3rd Ruby 不依赖于语言环境 因为红宝石是一个服务器端语言而不是客户端像 JavaScript 一样的语言 Ruby 使用系统时钟yourWeb 应用
  • 单例属性

    好吧 如果我创建一个单例类并通过公共静态属性公开单例对象 我明白了 但我的单例类还有其他属性 这些应该是静态的吗 这些也应该是私人的吗 我只想通过执行以下操作来访问单例类的所有属性 MySingletonClass SingletonPro
  • 是否可以修改 PDF 表单字段名称?

    情况是这样的 我有一个 PDF 其中包含自动生成的 pdf 表单字段名称 问题是这些名称不太用户友好 它们看起来像 topmostSubform 0 Page1 0 Website Address 0 我希望能够更改它们 使它们类似于 We
  • 时间:2019-03-17 标签:c#backgroundworker和partialclass

    我在实现从堆栈溢出获得的代码时遇到问题 它是关于终止后台工作进程的 我的代码如下 using System using System Collections Generic using System Data using System Dr
  • 从 jar 加载 .so 文件

    我用 C 语言创建了一个库 并使用 JNI 从 Java 调用它 因此我有我的包和一个包含 libMYLIB so 文件的 lib 文件夹 我记得在Java写作中 static System loadLibrary MYLIB 如果我使用选
  • 如何判断何时创建新组件?

    我一直在寻找背后的逻辑当有人在 AngularJS Angular 上的 Web 应用程序中创建新组件时但我认为这更通用 可能适用于所有基于组件的前端框架 我知道有像这样的一些原则应该是抽象的和可重用的但例如我在角度文档中看到 每个单独的路
  • 使用 protobuf-net 序列化继承的类

    我在使用 protobuf net 序列化派生类时遇到问题 我不知道是因为不支持 还是我做错了什么 我有一个通用基类 我可以直接序列化 然后我对其进行专门化 但我无法序列化这个基类 以下是两个类的代码和使用示例 难道我做错了什么 Edit
  • CckEditor - 从 AJAX 加载的模板

    我正在使用 CkEditor 并且想要定义一个自定义模板 该模板使用 AJAX 函数来加载 HTML 字符串 我已经能够定义自定义模板 但如果我对模板对象的 html 属性使用函数 则该函数永远不会执行 是否可以使用 AJAX 和默认模板插
  • 以编程方式插入行(父行和子行)

    我正在使用 Spring 和 JDBCTemplate 该场景是 CUSTOMER 表和 ORDERS 表的父子关系 我想做一个插入 例如 1 个客户和 5 个订单 但我不确定如何以编程方式在 CUSTOMER 表中插入一行 如何获取 Or
  • 实施二分查找有哪些陷阱? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 二分查找比看起来更难实现 虽然二分搜索的基本思想相对简单 但细节可能出人意料地棘手 Donald Knuth 新的二分搜索实现中最有可
  • ASP.NET MVC 4 中的 Toast 通知

    我想在用户使用 Toastr 插件单击 添加到购物车 按钮时显示通知 基本上 当用户单击按钮时 它会执行 AddToCart 操作 然后重定向到索引页面 当页面显示时 它会检查 TempData 值 然后显示通知 这是控制器 public
  • 以编程方式更改 Redux-Form 字段值

    当我使用redux formv7 我发现没有办法设置字段值 现在在我的form 我有两个select成分 当第一个时 第二个的值就会很清楚select元件值改变 在类渲染中 div div site div div div div
  • 如何从此 AWS SecretsManager JSON 对象中提取字段?

    我正在使用 AWS Secrets Manager 来保护 REST API 的数据库信用 我正在使用 AWS Lambda API 网关和 RDS MySQL 以下是我如何获得它们 Load the AWS SDK var AWS req
  • 在 .Net 中保持 Powershell 运行空间打开

    我正在尝试从 VB Net 中运行一些 PowerShell 代码 如果您知道的话 C 编码器也可能会有所帮助 代码的第一部分 我需要使用密码连接到 na 控制器 并且需要保持连接打开 我还有其他命令需要通过单击按钮来运行 获取文件 显示文
  • 卡桑德拉身份验证问题

    卡桑德拉版本 apache cassandra 2 1 8 我最近配置了 2 节点集群Authenticator设置PasswordAuthenticator 当其中一个节点关闭时 我无法登录 Cqlsh 并出现以下错误 Connectio
  • 如何禁用 CRM 2011 Xrm 缓存?

    我的 crm 2011 缓存有问题 我不需要它 但我不知道如何禁用它 首先我生成这个 CrmSvcUtil exe codeCustomization Microsoft Xrm Client CodeGeneration CodeCust
  • 如何在 Azure 中仅部署辅助角色/Web 角色

    如果您在 Azure 解决方案中拥有 Web 和辅助角色 那么所有等待发布更新包 上传到云存储 等待包部署的过程可能会让人筋疲力尽 浪费大量时间 如何仅上传 部署包含这两个角色的 Microsoft Azure 解决方案的辅助角色或 Web
  • VB - 以隐式方式链接 DLL

    我正在开发 VB6 图形界面 并且需要隐式链接到 DLL 这样做的动机来自于我上一个问题 https stackoverflow com questions 5194573 有问题的 DLL 使用静态 TLS declspec thread
  • ios7 navigationController PushViewController 动画错误

    看来我在 navigationController PushViewController 方法中发现了一个错误 为了重新创建它 我采用了示例主详细信息项目并对 didSelectRow method void tableView UITab