【问题标题】:Swift dismissing view with clunky animation用笨重的动画快速关闭视图
【发布时间】:2021-05-03 13:56:38
【问题描述】:

我只是有一个ViewController,我想dismiss。这是我的dismissAction

@objc private func dismissView(){
    
    self.dismiss(animated: true, completion: nil)
    
    UserDefaultsService.shared.updateDataSourceArrayWithWishlist(wishlist: self.wishList)
    let dataSourceArray = UserDefaultsService.shared.getDataSourceArray()
    //  update datasource array in MainVC
    self.dismissWishlistDelegate?.dismissWishlistVC(dataArray: dataSourceArray, dropDownArray: self.dropOptions, shouldDeleteWithAnimation: false, wishlistToDelete: self.wishList)

}

问题:

dismiss 动画很clunky,一点都不流畅。我发现如果我删除函数中的所有内容但只调用 self.dismiss 它工作得很好。这里有什么问题?关于如何解决这个问题的任何想法?

【问题讨论】:

  • dismissWishlistVC 可能是一个有很多循环或东西的大函数。如果可以,请尝试将所有内容都放在后台线程中。
  • @aheze 我认为问题是UserDefaultsService.shared.updateDataSourceArrayWithWishlist(wishlist: self.wishList)。因为如果我删除那条线,它就会顺利运行。
  • 可能。这个函数有什么作用?
  • @aheze 说的很像 :D dataSourceArray[Wishlist] 所以它正在寻找给定的Wishlist 然后用给定的替换旧的

标签: ios swift uiviewcontroller viewcontroller dismiss


【解决方案1】:

你可以尝试在主线程中轻负载

DispatchQueue.global().async {
   UserDefaultsService.shared.updateDataSourceArrayWithWishlist(wishlist: self.wishList)
}

并且在最后一行直接使用self.wishList而不是let dataSourceArray = UserDefaultsService.shared.getDataSourceArray()

【讨论】:

  • 谢谢,我的问题出了什么问题……我又爱又恨
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-11-18
  • 2018-04-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-31
相关资源
最近更新 更多