在iOS 6中使用客户UIActivity子类时,可以指定从初始UIActionViewController视图中选择操作时将显示的自定义视图控制器.您可以通过从UIActivity子类的activityViewController方法返回对自定义视图控制器的引用来完成此操作.
activityViewController
此方法的默认实现返回
nil.使用视图控制器提供附加UI的子类可以重写此方法以返回该视图控制器.如果此方法返回有效对象,系统将为您显示返回的视图控制器,而不是调用该performActivity方法.在iPad上,您的视图控制器显示在弹出窗口内.在iPhone和iPod touch上,视图控制器以模态呈现.您的自定义视图控制器应提供自定义UI的视图,并应处理这些视图中的任何用户交互.完成活动后,请勿自行关闭视图控制器.相反,调用
activityDidFinish:方法并让系统为您解雇它.
请注意第一段末尾的位:在iPad上,视图控制器显示在弹出框内.在iPhone和iPod touch上,视图控制器以模态呈现.
但是,在iPad上activityViewController,无论我如何呈现UIActivityViewController(无论是模态还是通过弹出窗口),返回的视图控制器始终以模态方式显示.当通过弹出窗口呈现时,它会导致崩溃,因为它不认为它被解雇了.
我究竟做错了什么?这是iOS 6中的错误吗?
更新:这是一个简单的Xcode项目,用于说明问题.随意克隆它并玩游戏,看看你是否能看到我们出错的地方:github.com/simonwhitaker/GSActivityDemo
我试图做的很好,为类编写单元测试,但是我有一些类处理首选项并检查首次运行。我编写的测试函数在第一次运行时可以正常工作,但是由于首选项已经具有值,因此后续测试失败。设置对象nil的结果Optional<Any>值不等于nil当牵强UserDefaults.standard.object(forKey:)。
我也曾尝试UserDefaults.standard.removeObject(forKey:)和UserDefaults.standard.synchronize()和UserDefaults.resetStandardUserDefaults()。似乎没有任何作用,Bundle.main.bundleIdentifier价值就是nil我不能使用UserDefaults.standard.removePersistentDomain(forName:)!
我已经发现了首被保存在:/Users/<name>/Library/Developer/CoreSimulator/Devices/<UUID>/data/Library/Preferences/xctest.plist我已经使用字符串试图"xctest"在removePersistentDomain和太不起作用。
我可以将该值设置为其他值和核对,但我真的很讨厌的垃圾我的代码来测试永远只存在于XCTest的情况(我已经有一个专用于因为这样做复位功能UserDefaults中(XCTest用例UserDefaults与代码中的用例不同!),那么究竟如何在UserDefaultsXCTestCase中重置标准?
尝试运行 XCTests 时,我收到多个函数的错误。
例如,我有一个简单的数组扩展来提取唯一的数组:
public extension CollectionType where Generator.Element: Hashable {
/// Returns the collection with duplicate values in `self` removed.
var unique: [Generator.Element] {
get {
var seen: [Generator.Element:Bool] = [:]
return self.filter { (element) -> Bool in
return seen.updateValue(true, forKey: element) == nil
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
但在测试中,当我尝试使用它时出现错误:
Ambiguous use of 'unique'
Run Code Online (Sandbox Code Playgroud)
有什么想法如何修复它吗?
我有一些不正确的观点.在我的项目中,我将定位链接到滑块以尝试确保它正在发生,并且当我拖动滑块时它会在视觉上来回捕捉.我已经剥离都记录下来,并提出了测试项目,试图弄清楚这一点,虽然未卡来回,它不会出现在工作的时候viewWillAppear中被调用,通过拖动滑块后只做时.截图和项目附件.

