我正在将iOS 6应用转换为iOS 7并遇到一些问题。
在iOS 6中,将调用不再调用的方法。
我的班级继承自UIAlertView。
例如:
- (void)layoutSubviews{
[super layoutSubviews];
rezise the frame for the tableview
}
在iOS 7中,此函数不再被调用,导致我的tableview没有调整大小(框架在CGrectZero处粘贴)。
还有一些方法不再被执行了。
我需要使用其他方法吗?
答案 0 :(得分:5)
UIAlertView
的视图层次结构是私有的,不应该被修改,也不应该UIAlertView
被子类化。在iOS 6中,你已经远离它,但不再在iOS 7中了。看看SDCAlertView。我写它来替换{{1}},保持外观和行为相同,但功能更多。
修改强>:
没有调用任何布局方法的确切原因是因为UIAlertView
永远不会添加到视图层次结构中。当您调用UIAlertView
时,会创建一个单独的窗口并使其处于活动状态,其中包含视图层次结构(可能由UIAlertView定义),其中包含警报的所有不同元素。其中一些元素也用于其他模态上下文,例如popover,动作表,iPad上的表单模式等。
您可以自己检查所有这些,并且通过一些讨厌的黑客攻击,您可以通过这种方式修改视图层次结构。但是,这绝对不推荐,因为它可能随时中断,即使使用7.x.y更新。