代码之家  ›  专栏  ›  技术社区  ›  SwiftyJD

有没有一种方法可以在保持在同一页面的同时从UIPageViewController中更改标签文本?

  •  0
  • SwiftyJD  · 技术社区  · 7 年前

       func addChainedAnimationView (titleLabel: String, descriptionLabel: String){
    //
    (completion: {(finished) in
       DispatchQueue.main.sync {
                                self.label1?.text = titleLabel
    
                            }
            })
    }
    

    EXC_u BAD_指令

    这就是视图控制器的构建方式,它被缩短了,因此您可以忽略一些参数:

    public class WelcomePageView : UIView
    {
        public var animationStrings : [String]?
        public var titleStrings: [String]?
        public var descriptionStrings: [String]?
    
        var index: Int = 0
    }
    
      var label1 : UILabel?
        var label2 : UILabel?
    
        func buildViewControllerWithImage(titleString : String, titleString2 : String?, descriptionString: String, descriptionString2: String?, backgroundImage: String, jsonFile : String, jsonFile2 : String?, index : Int, loopCount: Int, userType: User, isLottieChained: Bool) -> UIViewController
        {
    
         let vc : UIViewController = UIViewController(nibName: "WelcomePageView", bundle: Bundle(for: type(of: self)))
            (vc.view as? WelcomePageView)!.index = index
            vc.view.frame = self.view.frame
             var paragraphStyle = NSMutableParagraphStyle()
    
      var label1String = titleString
            if(!(label1String.contains("\n"))) {
                label1String = "\n"+label1String
            }
            paragraphStyle = NSMutableParagraphStyle()
            paragraphStyle.lineSpacing = 0
            paragraphStyle.alignment = .center
            paragraphStyle.minimumLineHeight = 24
            label1  = (vc.view.viewWithTag(2) as? UILabel)!
            label1?.font = UIFont.CustomBold(size: 20)
    
            var attrString = NSMutableAttributedString(string: label1String)
            attrString.addAttribute(NSParagraphStyleAttributeName, value:paragraphStyle, range:NSMakeRange(0, attrString.length))
            (vc.view.viewWithTag(2) as? UILabel)!.attributedText = attrString
          return vc
        }
    

    我是这样理解的:

      func getViewControllerWithImage(_ index: Int, userType: User, country: Country) -> UIViewController
    
        {
               vc =  self.buildViewControllerWithImage(titleString:"FIRST_SCREEN_TITLE".localized, titleString2: nil, descriptionString: "FIRST_SCREEN_DESCRIPTION".localized, descriptionString2: nil, backgroundImage: "fractal_blue", jsonFile: "Welcome_Step_01_V01", jsonFile2: nil, index: index, loopCount: loopCount, userType: userType, isLottieChained: false)
    
     return vc
        }
    

    public func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -> UIViewController? {
    
        var index : Int = (viewController.view as? WelcomePageView)!.index // currentIndex = index
    
    //currentIndex = index
    //(viewController.view as? WelcomePageView)!.index
    
    print ("XXXXX after \(index) XXXXXXX ")
    //index = self.currentIndex
    index += 1
    
    if (index == maxPages)
    {
        index = 0
    }
    return self.getViewControllerWithImage(index, userType: User.newUser, country: 
    
    checkCountry())
    }
    
    1 回复  |  直到 7 年前
        1
  •  0
  •   dantheli    7 年前

    我相信你的问题可能在召唤 sync 而不是 async

    您已经在主队列上,因此永远不要调用sync,因为它会导致主队列本身等待的死锁。