我正在将一些实用程序方法集中在一起进行测试,我希望能够从任意方法中弹出一个视图 - 一个不一定知道任何UIViewControllers或窗口的方法。这可能吗?
例如,我正在准备一个自定义位置管理器垫片,以便我可以在测试时手动注入位置数据。我想要一些弹出MKMapView的方法,让我选择“当前位置”,而不是在代码中手动输入lat / long值。
答案 0 :(得分:1)
我认为有可能,即使我不知道该怎么做。我之所以知道这是可能的,因为我看到Facebook的FBConnect和DDSocialLoginDialog图书馆做你所描述的。
FBConnect的源代码和体系结构非常复杂,但DDSocialLoginDialog很容易获取并提取您需要的源代码(2个类,包含4个文件和几百行代码)。两者都是开源的。然后,我希望您可以修改源代码,以便它可以将MKMapView添加为子视图
答案 1 :(得分:1)
按照@ vodkhang的建议,我看了一下代码并创建了我自己的类别(UIView + ShowThySelf)来从任何方法弹出任意视图。对于那些感兴趣的人,可以在github上找到
答案 2 :(得分:1)
前面提到的方法的摘要,以防您想要自己编写代码:
创建一个UIControl。编写一个方法来关闭该控件,并将其作为目标添加到该控件。将要在该控件内弹出的视图作为子视图放置。使用:
[UIApplication sharedApplication] keyWindow]
或(在极少数情况下,您的应用有多个窗口,例如VGA线缆支持):
[[[UIApplication sharedApplication] windows] objectAtIndex: 0]
找到添加子视图的位置(您创建的控件)。添加它。