我正在展示一个没有任何按钮的UIAlertViewController,因为它只是告知用户上传正在进行中.该应用程序应该将一些文件上传到Amazon S3(某些事情发生在并行线程上),我担心当我想解雇时,对警报视图控制器的引用会丢失.
什么可能是错的?我甚至不知道如何调试这个,因为Debug区域没有错误?
我有一个类级属性: var uploadInProgressAlert = UIAlertController()
我使用此代码显示没有按钮的警报(它工作):
self.uploadInProgressAlert = UIAlertController(title: "Uploading", message: "Please wait.", preferredStyle: .Alert)
self.presentViewController(self.uploadInProgressAlert, animated: true, completion: nil)
Run Code Online (Sandbox Code Playgroud)
此代码用于关闭警报(警报不会被解除):
self.uploadInProgressAlert.dismissViewControllerAnimated(false, completion: nil)
在这个帖子中:iOS解雇UIAlertController以回应有人谈到"持有引用"的事件.我不知道"持有参考"是什么意思,我认为这可能是问题的根源.
编辑:我已将上述代码放在一个简单的测试应用程序中,并在那里工作.但是当一些并行线程的事情变得复杂时,我找不到解除警报的方法.
var delay4s = NSTimer()
var delay8s = NSTimer()
var alert = UIAlertController()
func showAlert() {
if NSClassFromString("UIAlertController") != nil {
alert = UIAlertController(title: "Uploading", message: "Please wait! \n\n", preferredStyle: UIAlertControllerStyle.Alert)
self.presentViewController(alert, animated: true, completion: nil)
}
}
func dismissAlert(){
self.alert.dismissViewControllerAnimated(true, completion: nil)
}
override func viewDidLoad() {
super.viewDidLoad() …Run Code Online (Sandbox Code Playgroud) 最近我为我的项目添加了一些目标.看着我的故事板文件的差异,我注意到了customModule="Target1Name".看起来我可以在IB中设置它,列出我的所有目标.但是这个故事板对所有目标都是通用的,所以我没有选择任何东西.
我想了解customModule参数是什么以及为什么它似乎设置为我的Target1Name?
我查看了一些相关的帖子,但无法理解customModule的用途.
一旦我添加了自定义栏导航栏按钮项,我就失去了使用默认功能返回的能力.我希望能够使用"从边缘滑动"返回.
我添加了Edge Pan Gesture Recogniser并将其连接到@IBAction,但是一旦识别出平移手势,解雇动作就会完全发生.
而不是慢慢地跟随我的拇指(如在其他应用程序中看到的),当前视图移出预定义的动画.
如何使用Edge Pan Gesture Recogniser按照我的拇指制作动画?
@IBAction func edgeSwipe(sender: AnyObject) {
navigationController?.popViewControllerAnimated(true)
}
Run Code Online (Sandbox Code Playgroud)
cocoa-touch uinavigationcontroller uigesturerecognizer swift
我想切换我的3个案例,但我收到一个我无法解决的错误:
错误:类型名称后的预期成员名称或构造函数调用
因为我一直在使用类似的代码,所以我必须忽略一些东西.但现在我几乎有一个空项目,无法弄清楚出了什么问题?
import UIKit
class ViewController: UIViewController {
enum MyStateStatus {
case Ready
case Running
case Stopped
}
@IBAction func actionPressed(sender: UIButton) {
switch MyStateStatus {
case MyStateStatus.Ready:
print("I'm ready")
default:
print("other")
}
}
Run Code Online (Sandbox Code Playgroud)
我正在使用Swift,Xcode 6.3.2
更新:替换println()用print()的雨燕2.2和Xcode中7的兼容性.
我想使用let rawDataFromArray = NSData(bytes: myArray, length: ???),但不知道如何获取我的数组的字节长度.以下是我的数组可以是什么的一些示例:
let arr1 = [1, 2, 3]
let arr2 = [1.0, 23556789000.0]
let arr3 = ["hello", "ok", ""]
func arrayLength(myArray: Array) -> Int {
var bytes = 0
for object in myArray {
// not sure what to do here
}
return bytes
}
Run Code Online (Sandbox Code Playgroud)
我不确定是否遍历数组的每个元素(如果字符串遍历每个字符,因为表情符号可能有更多的字节代表它们)是正确的方法.
如何获取数组的字节大小?
谁能告诉我正确的方法呢?
或者也许只是在Swift中转换Array为不好的做法NSData?
我还看到将Swift数组转换为NSData用于持久存储并将字节数组转换为NSData和自定义数组转换为NSData,但无法弄清楚如何为这种任意数组获取字节大小.
如果我的项目中有未使用的功能,我希望Xcode显示警告.我正在使用Swift.
我去了Project / Build settings,并在部分Apple LLVM 8.1 - Warnings - All Languages我设置Unused functions到Yes.
但是我没有收到项目中未使用函数的警告.
如何正确设置Xcode以显示未使用功能的警告?
Swift中[String]和[(String)]之间有什么区别?我让他们使用let arr1 : [String]和let arr2 = [String]().
我正在尝试向IBInspectableUIView添加颜色,以便我可以在故事板中设置它,然后在代码中使用它。在这篇关于 UITextField 的帖子中,我已经看到我可以利用扩展和添加计算属性,但我不能让它为 UIView 工作。
我遇到了崩溃:无法在(UIView)上设置(additionalColor1)用户定义的检查属性:[setValue:forUndefinedKey:]:此类不符合键 additionalColor1 的键值编码。
知道是什么导致了崩溃以及如何修复它?
这是我的代码:
extension UIView {
@IBInspectable var additionalColor1: UIColor? {
return self.additionalColor1
}
}
Run Code Online (Sandbox Code Playgroud)
作为参考,我粘贴了可用于为 UITextField 设置占位符颜色的代码(与上面的 url 相同)。这工作正常:
extension UITextField {
@IBInspectable var placeHolderColor: UIColor? {
get {
return self.placeHolderColor
}
set {
self.attributedPlaceholder = NSAttributedString(string: self.placeholder != nil ? self.placeholder! : "", attributes:[NSForegroundColorAttributeName: newValue!])
}
}
}
Run Code Online (Sandbox Code Playgroud)