对于 alertController:什么是 UISegmentedControl 中选定段的 sourceView
For an alertController: what is the sourceView of a selected segment in a UISegmentedControl
我有一个 UISegmentedControl
有 4 个片段。其中一些段在用户选择时实例化 UIAlertController
。
在 UIAlertController
上,您可以设置 popoverPresentationController?.sourceView
让警报控制器指向原点视图,这将在 iPad 等大型设备上使用。
我尝试传递有效的 UISegmentedControl
,但锚点始终位于分段控件的左上角 - 而不是所选的分段。
我想使用 UISegmentedControl
的实际段作为 sourceView,但是 UISegmentedControl
上没有包含这些段的数组。
有一个包含视图数组的子视图 属性。该数字对应于段数,所以我虽然找到了解决方案。但是如果我分配:
alertController.popoverPresentationController?.sourceView = segmentedControl.subviews[2]
...对于第三段,它有时有效,有时无效。看起来这个数组并不总是按照屏幕上的段顺序排列。
如何找到要使用的正确子视图?
我找到了解决方案:
alertController.popoverPresentationController?.sourceView = (segmentedControl.subviews.sorted { [=10=].frame.origin.x < .frame.origin.x })[segmentedControl.selectedSegmentIndex]
这将首先按照 x 坐标的顺序对视图进行排序。然后我可以使用 segmentedControl.selectedSegmentIndex
作为索引。
我有一个 UISegmentedControl
有 4 个片段。其中一些段在用户选择时实例化 UIAlertController
。
在 UIAlertController
上,您可以设置 popoverPresentationController?.sourceView
让警报控制器指向原点视图,这将在 iPad 等大型设备上使用。
我尝试传递有效的 UISegmentedControl
,但锚点始终位于分段控件的左上角 - 而不是所选的分段。
我想使用 UISegmentedControl
的实际段作为 sourceView,但是 UISegmentedControl
上没有包含这些段的数组。
有一个包含视图数组的子视图 属性。该数字对应于段数,所以我虽然找到了解决方案。但是如果我分配:
alertController.popoverPresentationController?.sourceView = segmentedControl.subviews[2]
...对于第三段,它有时有效,有时无效。看起来这个数组并不总是按照屏幕上的段顺序排列。
如何找到要使用的正确子视图?
我找到了解决方案:
alertController.popoverPresentationController?.sourceView = (segmentedControl.subviews.sorted { [=10=].frame.origin.x < .frame.origin.x })[segmentedControl.selectedSegmentIndex]
这将首先按照 x 坐标的顺序对视图进行排序。然后我可以使用 segmentedControl.selectedSegmentIndex
作为索引。