我的应用程序的一个规范是,点击tableView单元格时,用户将被重定向到与该单元格关联的网站.以下是代码:

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
    if let url = NSURL(string: appdelegate.studentInfo[indexPath.row].url) {
        tableView.deselectRowAtIndexPath(indexPath, animated: true)
        UIApplication.sharedApplication().openURL(url)
    }
    else {
        let alert = UIAlertController(title: "Invalid URL", message: "Cannot open URL because it is invalid.", preferredStyle: UIAlertControllerStyle.Alert)
        alert.addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.Cancel, handler: nil))
        self.presentViewController(alert, animated: true, completion: nil)
    } 
}

在我第一次点击时,URL会像预期的那样打开.然而,从Safari返回应用程序并touch 另一个单元格会导致以下错误,尽管该应用程序仍能正常工作:

对尚未渲染的视图进行快照会导致空视图

有没有办法避免这个错误?还是这是一只虫子?

我曾try 过dispatch_async块,但没有解决问题.

推荐答案

这可能与我的问题不同,但我只是解决了日志(log)中的相同警告.

我在iPad上展示了一个UIAlertController,作为一个actionSheet popover,每次我试图展示alert控制器时,我都会连续收到8次完全相同的警告.

为了让警告消失,我所要做的就是按照以下代码布局alert controller视图:

let alertController = UIAlertController(title: nil, message: nil, preferredStyle: .ActionSheet)

    ...            

alertController.view.layoutIfNeeded() //avoid Snapshotting error
self.presentViewController(alertController, animated: true, completion: nil)

我希望这能帮助你或其他有同样警告的人.

Swift相关问答推荐

为什么模拟器中不能点击按钮?

在swift静态var扩展中,如何或可以访问和返回具体类?

try 在SwiftUI中做5星评级

为什么我的引用类型对象在初始化后有3个强引用?

是否可以循环遍历SWIFT子类并访问它们的静态变量S?

使用MKLocalSearch获取坐标

如何为我的项目设置生命周期选项?

在扩展中创建通用排序函数

表视图插座单元测试失败

如何根据 DatePicker 中选定的日期实现 TabView 页面切换?

字符串和整数格式的for循环,帮忙!

如何隐藏集合视图中特定的单元格,以避免出现空白空间?

在 init(from decoder: Decoder) 方法中访问原始 JSON 数据

我如何遵守与演员的协议?

用逻辑运算符保护让

是否可以使任何协议符合 Codable?

Type 应该采用什么协议来让泛型函数将任何数字类型作为 Swift 中的参数?

如何在Swift中找出字母是字母数字还是数字

Swift:创建 UIImage 数组

iOS 视图可见性消失了