- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我觉得我知道这个问题的答案,但想确认我的想法。
如果我错了,指针会很有帮助,因为我在过去几个小时里一直在乱写代码,也在网上搜索。
我有一个 NSTimer 在设定的时间范围内通过委托(delegate)更新多个 View 。
我认为将我的 View 放在 iPad 和 iPhone 6 Plus 上的 Split View中会很好看。我成功地将我的 View 移动到 Split View Controller 中,但是当我旋转设备时,只有一侧通过委托(delegate)更新(主更新或细节更新),具体取决于旋转设备时我在应用程序中的位置。当设备处于“ Split View模式”时,那一侧继续更新。如果我单击母版中的新行并且母版正在更新(细节没有),那么细节开始更新而母版停止。
我的猜测是,因为委托(delegate)在主队列上触发以更新 View (据我所知,这是更新 View 的唯一方法),所以它只更新当前设置为事件的 View (即主视图即使当我在查看成为详细 View 的内容时旋转,它不在主队列中也是可见的)。是这样吗?不能同时在 Split View的两侧触发更新吗?
我再次寻找更多可能吗?我的应用程序按预期纵向工作,我只是想让它更通用一些,并通过添加 Split View更好地使用房地产。如果我不能同时更新 Split View的两侧,我将重新考虑我尝试走的路。
编辑:感谢您的回答。为了阐明我在做什么,我将添加一些代码:
protocol MasterTimerDelegate {
func masterTimerDidUpdate(item: Item, forGroup group: Group)
func masterTimerDidUpdateAllItems()
func masterTimerDidUpdateProgressForItem(item: Item, forGroup group: Group, withProgressCompleted progress: Double)
}
然后两个 ViewControllers 无论是在 MasterView Area 还是 DetailView area 都在实现那个 Delegate
MasterTimer 类现在每 1 秒触发一个 NSTimer 进行测试,我让它更新标签和各种其他组件。
这是我在 splitView 的 DetailSide 上的代码示例。
func masterTimerDidUpdate(item: Item, forGroup group: Group) {
if group == self.group {
let rowToUpdate = group.items.indexOf(item)
let newPath = NSIndexPath(forRow: rowToUpdate!, inSection: 0)
if let cell = self.tableView.cellForRowAtIndexPath(newPath) as? ItemCell {
cell.configureDurationLabelForItem(item)
}
}
}
我在 MasterView 方面有类似的东西。我在 View 中设置 masterTimer.delegate = self 加载了我要更新的 ViewControllers。我想不出我会把它放在其他地方,因为根据我对已经提供的两个答案/提示的理解,这意味着如果 View 在屏幕上处于事件状态,它就会被加载并且不会留下内存,所以 masterTimer。无论在呈现 View 时,委托(delegate)都应该监听。
更新 #2:我尝试像这样设置设备轮换通知:
NSNotificationCenter.defaultCenter().addObserver(self, selector: "didRotate:", name: UIDeviceOrientationDidChangeNotification, object: nil)
在我的 didRotate 中我有以下内容:
func didRotate(notification: NSNotification) {
print("device rotated")
selectedCellIndexPath = nil
masterTimer.delegate = self
self.tableView.reloadData()
}
我还在上面的委托(delegate)方法上添加了一个打印语句,以查看它是否正在触发。当设备处于纵向模式时,委托(delegate)将触发。如果我在主视图中选择一个单元格来显示我的组 View ,它也会触发。但如果我有什么将成为屏幕上的主视图,当我在纵向和切换到横向时,它不会开火。通知在旋转时触发,但代表似乎不再收听,因为打印语句在旋转后未触发。
最佳答案
View 并不真正存在于队列中,无论是主队列还是其他队列 - 所有 UIView,无论可见与否,都需要在主队列中更新,因为它们是底层的图形系统...
似乎出于某种原因,一方只是不知道它应该更新,可能是因为您依赖于调用 viewWillAppear 之类的东西,但事实并非如此?
无论如何,您应该能够随时更新任何 View 。
关于ios - 更新 UISplitView Controller 的两侧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32622215/
我设法检查一个整数是否是从右到左排序的,但我如何检查从左到右的顺序?也许我应该做 2 个功能,一个从左到右检查,另一个从右到左检查?例如,我将 return 0; 替换为第二个函数,该函数检查它是否从
我想在两侧“剪切”我的页面,如下所示: http://i.stack.imgur.com/ngZrp.jpg 演示:https://jsfiddle.net/r2g0eyxf/3/ #left {
我很难在页面的两边都获得背景: 风格 .left { background: url(wax.png); width: 15%; position: absolute; lef
我需要逐步证明:7 + O(n) = O(n) 当两边都有大O的时候,我不知道该怎么做。 我想我理解大 O 符号的概念,但为什么两边都有大 O? 最佳答案 这种表示法的使用不符合大 O 表示法的正式定
我的目标是使 slider 宽度为 1280 像素并位于页面中央。我希望内容的边缘在两侧都有隐藏的溢出。例如,我希望内容的中心始终位于页面的中心,随着浏览器的大小调整,每一边都被切断,并且没有出现水平
我在做什么:在悬停按钮时,我添加了一个 5px 的底部边框。 JS fiddle : http://jsfiddle.net/mUCNB/ 问题: 问题是边框底部在左侧和右侧都延伸了 1px。 问题:
我是一名优秀的程序员,十分优秀!