Trong một dự án tôi đang làm việc, tôi phải viết mô-đun trợ giúp UIAlert để hiển thị cửa sổ bật lên tại đây và trong ứng dụng iOS của tôi. Các cửa sổ bật lên được viết như là các hàm lớp mà tôi có thể chỉ đơn giản gọi bất cứ nơi nào trong mã (lớp là tĩnh và vì vậy tất cả các hàm).UIAlertController - Hành động không được thực thi nếu cảnh báo bị loại bỏ lần đầu tiên
Tôi hiện đang gặp phải một lỗi rất lạ khi bạn loại bỏ cảnh báo một lần, sau đó mở lại, hành động của nó không hoạt động nữa (như trong trình xử lý tác vụ không được gọi). Nó không có tác dụng nếu bạn nhấp vào hành động lần đầu tiên popup được hiển thị, mặc dù ...
Đây là mã cho popup cụ thể mà lỗi này xảy ra (không popup khác bị ảnh hưởng gì):
static func popSkipWalkthrough() {
let alert = UIAlertController(title: "Skip", message: "whatever", preferredStyle: .Alert)
alert.addAction(cancelAction)
alert.addAction(skipWalkthroughAction)
appDelegate.window!.rootViewController!.presentViewController(alert, animated: true, completion: nil)
}
các skipWalkthroughAction
được định nghĩa như sau:
static let skipWalkthroughAction = UIAlertAction(title: "Continue", style: .Default, handler: { (action: UIAlertAction!) -> Void in
appDelegate.setWindowViewTo("NavCtrl", navigateTo: false)
CallIn.Settings.didWalkthrough = true
})
Và cancelAction
được định nghĩa là:
static let cancelAction = UIAlertAction(title: "Cancel", style: .Cancel, handler: nil)
cửa sổ bật lên đặc biệt này được hiển thị mỗi khi bạn nhấn 'bỏ qua' nút trong bước cuối cùng của một walk-through ...
Tôi đã thử một vài dẫn về những gì là nguyên nhân cho hành vi này là, và Tôi nghĩ rằng nó có thể có một cái gì đó để làm với popup không thực sự được deallocated, nhưng tôi không chắc chắn ở tất cả các điểm này ...
Bất kỳ ý tưởng?
Điều này đã sửa nó! Cảm ơn. Bạn cũng có thể vui lòng giải thích lý do tại sao bạn đang gặp vấn đề về cách tôi đã viết? Có giải pháp nào tốt hơn không? – Skwiggs
@Skwiggs, vui lòng xem chỉnh sửa. – avismara