为什么我的UITableViewFooter会跳到顶端?

时间:2015-08-21 05:10:01

标签: ios swift uitableview

self.tableView.tableFooterView = PromptInviteView.instantiateFromNib()

我已尝试将其放入viewWillAppear和viewDidLoad。

很好,一切都显示出来并正确显示。

但是,如果:

  1. 我按下HOME并打开4-5个其他应用程序,然后返回我的应用程序,页脚将会跳过#34;到顶部,覆盖第一排。
  2. 如果我在应用程序内部执行其他操作(来回导航),然后最终返回到他的vc,那么它也会跳到顶部。
  3. 当我拉动刷新时,一切都很好。但如果我不做任何事情......页脚停留在顶部(替换顶行+不可点击)

    有谁知道为什么会出现这种情况,以及如何解决这个问题?

    更新:我意识到" drawRect"当我在4-5个其他应用程序之后打开应用程序时,我的xib会被调用。这就是问题发生的原因。

    在我的drawRect代码中,我有这个:

    override func drawRect(rect: CGRect) {
        super.drawRect(rect)
        inviteLabel.textColor = UIColor(hex: 0x404040)
        inviteLabel.text = STRINGS["PromptInviteLabelText"]
        inviteLabel.numberOfLines = 0
        inviteLabel.sizeToFit()
    
    
    
        inviteButton.setTitle(STRINGS["PromptInviteButtonText"], forState: UIControlState.Normal)
        inviteButton.backgroundColor = FlatWatermelon()
        inviteButton.setTitleColor(UIColor.whiteColor(), forState: UIControlState.Normal)
        inviteButton.setTitleColor(UIColor(hex: 0xcccccc), forState: UIControlState.Selected)
        inviteButton.layer.cornerRadius = 2.0
        inviteButton.clipsToBounds = true
    
        super.layoutSubviews() //this will allow the view's frame to be set.
    
        var padding = CGFloat(20.0)
        self.frame = CGRectMake(0, 0, screenWidth, CGRectGetMaxY(inviteButton.frame) + padding )
    
    
        var topBorder = UIView()
        topBorder.frame = CGRectMake(0, 0, screenWidth, 0.5)
        topBorder.backgroundColor = UIColor(hex: 0xededed)
        self.addSubview(topBorder)
    
    
        var bottomBorder = UIView()
        bottomBorder.frame = CGRectMake(0, self.frame.size.height, screenWidth, 0.5)
        bottomBorder.backgroundColor = UIColor(hex: 0xededed)
        self.addSubview(bottomBorder)
    }
    

    如何删除我的代码(尤其是layoutSubview部分)并将其放在其他地方?

    我应该放置代码的另一个位置吗?是否有 didLayoutSubviews()等效?

0 个答案:

没有答案