- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我遇到了一个我无法向自己解释的问题,我希望你能为我指明正确的方向,甚至为我提供合适的解决方案。
我有一个 UITableViewController 嵌入到 UINavigationController 中,带有自定义原型(prototype) UITableViewCell。在我的 Storyboard 中,我添加了一个 Segue 来显示(推送)一个细节 View Controller 到堆栈上。这工作正常,到目前为止没有任何意外。
但是,当我按下详细 View Controller 上的后退按钮时,它会返回到我的 UITableViewController,但这次,TableView 跳到顶部并显示我在其中放置 SearchBar 的 TableViews HeaderView。
当我在我的detail view controller 上选中“Hide Bottom Bar on Push”时会发生这种情况,我需要它以便detail view controller 隐藏标签栏我在其中嵌入了 NavigationController 的 UITabBarController。
我的层次结构看起来像这样:
-UITabBarController
--UINavigationController
---UITableViewController (my table view controller)
--(more view controllers for other tabs)
奇怪的是,这不会立即发生。当我返回时,一开始一切看起来都不错,但在很短的时间后它真的跳到了 tableview 的最顶部。
我在按下后退按钮后记录了 TableView contentOffset 及其类似内容:
T0.000: viewDidLayoutSubviews => -20
T0.011: viewWillAppear => 44
T0.023: viewDidLayoutSubviews => -20
T0.530: viewDidAppear => -20 (correct value, same as before the push)
T0.540: viewDidLayoutSubviews => -64 (wrong value, showing search bar)
大约半秒后会发生什么?为什么它突然跳到顶部?我从不自己设置偏移量。它以某种方式由系统自动完成,如果我在我的详细 View Controller 中取消选中“推送时隐藏底部栏”,该行为将按预期工作,这意味着如果我之前可以看到搜索栏,那么它在之后是可见的,如果它是前隐后隐。
最佳答案
嗯,我不知道如何解决这个问题,但至少我找到了一个解决方法来停止跳跃。我在其他应用程序中观察到同样的问题,甚至苹果也不再隐藏应用程序启动时的搜索栏。也许是因为这个问题,谁知道呢?所以这是我的解决方案。
首先,只有当您的表格 View 的单元格少于它需要填满整个屏幕时才会出现此问题。一旦您的单元格多于屏幕无法容纳的单元格,在转到详细 View 然后返回主视图后,表格 View 不会跳转并停留在相同的位置。
有了这些知识,我就能够创建一个解决方法。我的解决方法很简单。我使用 segues 来显示我的应用程序的各个部分,所以在我的 UITableViewController 中,它是“master”,在准备(for segue:sender:)中,在我显示详细 View 之前,我检查 TableView 的第一个单元格是否可见.如果是这样,我滚动表格 View 以显示搜索栏。
if let firstCell = tableView.cellForRow(at: IndexPath(row: 0, section: 0)) {
if tableView.visibleCells.contains(firstCell) && !searchController.isActive {
let offset = CGPoint(x: 0, y: -tableView.contentInset.top)
tableView.setContentOffset(offset, animated: true)
}
}
单击其中一个单元格时,将执行一个显示条目详细信息的转场。如果第一个单元格可见,我将表格 View 向下滚动一点以显示搜索栏。
更好的方法可能是实际计算屏幕上可以容纳多少个单元格以及我们总共有多少个单元格,因此我们实际上只在没有足够的单元格时显示搜索栏,但我发现这个解决方案已经足够好了对我来说,因为它可以防止跳跃。
关于ios - 当 "Hide Bottom Bar on Push"对于来自 Cell 的 segue 为真时,UITableView 跳转到顶部显示 SearchBar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40798678/
我有两个函数,在 C++ 中看起来像这样: void f1(...); void f2(...); 我可以更改 f1 的主体,但是 f2 是在另一个我无法更改的库中定义的。我绝对必须(尾部)在f1 中
我正在尝试避免这个 while 循环出了什么问题 while True: start = input("Ok, are you ready now?\n") if (start !=
当我点击按钮加载页面时,它加载正常。调整浏览器大小后,此页面会不断刷新。我复制了布局页面的一部分,用于处理按钮。如果我遗漏了什么,你能告诉我吗? Statistics 最佳答案 确保没有在“调
PHP的header函数 可以很少代码就能实现HTML代码中META 标签 这里只说用 header函数来做页面的跳转 1. HTML代码中页面的跳转的代码 HTML meta refresh 刷
我使用并喜欢 Tim Pope's excellent Fugitive plugin for VIM ,我一直希望能够加载 :Glog quickfix 中所有文件的差异,并通过它们循环到 HEAD
当我访问 my_site.com/page.php#something 时,滚动位置是携带此特定主题标签的元素之一,而不是页面顶部。 执行 window.scrollTo(0, 0); 不会改变这一事
在我自己的一个应用程序中看到这一点后,我构建了一个测试应用程序。 我在导航 Controller 中嵌入了一个集合 View 。 这一切都链接到 ViewController 类。 class Vie
在我们的应用程序中,当其中一个 View 被推送到导航 Controller 时,导航栏会显示 5 秒,然后我们将 navigationBarHidden 设置为 TRUE。稍后,如果用户点击屏幕,我
我必须更新滚动 UITextView 中的少量文本。我只会在光标当前所在的位置插入一个字符,并且只需按一下导航栏上的按钮即可执行此操作。 我的问题是,每当我调用 TextView 的setText方法
我正在使用第三方脚本(详细信息如下)将表单分解为多个 ajax 页面。当我单击前进到下一页时,它会跳转到表单顶部的 anchor 。这是一种不必要且不和谐的行为,我想阻止它发生。这个脚本不是我写的,不
这个问题已经有答案了: Call an absolute pointer in x86 machine code (2 个回答) 已关闭 4 年前。 我正在用 C 语言为 x86_64 linux 编
查看objdump -d ELFfile的输出,我无法区分直接和间接跳转/调用。有什么建议吗? 最佳答案 间接调用和跳转有*在指令之后和位置之前,如callq *%r13和jmpq *0x204d8a
我试图通过单击 anchor 链接来突出显示 div。我的意思是如果我点击My link 然后滚动到 here在此页面上,我有很多 anchor 链接和 div,因此很难识别哪个 div 然后滚动,因
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 8 年前。 Improve this ques
没有任何编程经验,只有基本的 html/css。我正在尝试创建一个 javascript 菜单(如果有更简单的方法,可以接受建议吗?),它将根据第一个菜单中选择的选项显示/隐藏?我有以下... Q
我正在使用 jquery 的 scrollTop 函数,但无法弄清楚为什么在同一项目上多次调用时它会跳来跳去。 我把这个 example 放在一起了来说明问题。单击测试按钮时,它会交替滚动到指定的项目
我已经创建了一个关于 Storyboard的项目, Storyboard上有两个名为“loginViewController”、“BViewController”的 View Controller ,
基本上,我在网站的最顶部有一个我想隐藏的 div,当您单击一个按钮时,它会将整个网站向下推并显示其内容。与此非常相似 nd.edu (单击标题右侧的帮助中心或白杨站点)。我正在使用 jquery 来完
当我单击所单击的 div 旁边的 div 框时,我的底部 div 会上下跳跃 这是 fiddle 的链接 http://jsfiddle.net/abtPH/17/ 这是我的jquery $('li
我在悬停时调整 .main-partners div 中卡片的大小,以便出现 查看更多 按钮。 我的问题是当我 :hover 在 .main-partners 中的卡片 (.main-card) 上时
我是一名优秀的程序员,十分优秀!