即使我重复使用单元格,表格视图滚动仍然不稳定和跳跃?

时间:2015-12-26 23:44:02

标签: ios swift optimization scroll tableview

好吧,所以我不确定我的Table视图是怎么发生的,但是现在我把镜像加载到它上面似乎有些奇怪。起初,它运行顺利,但现在我在ios 9工作,滚动很糟糕

我曾经使用优化来减少这种情况(请记住,它们并没有真正帮助。) - 删除透明对象并将其设置为默认背景 - 重复使用的表格单元格 - 试图使用质量较低的图像

这是我的代码

import UIKit

class mainVC: UIViewController, UITableViewDataSource, UITableViewDelegate {

    @IBOutlet weak var resultsTable: UITableView!
    @IBOutlet weak var menuButton:UIBarButtonItem!

    var deleteArray = [String]()
    var followArray = [String]()

    var resultsLocationArray = [String]()
    var datetextfielArray = [String]()

    var imageDates = [String]()

    var resultsNameArray = [String]()
    var resulltsImageFiles = [PFFile]()
    var resultsTweetArray = [String]()

    var resultsHasImageArray = [String]()
    var resultsTweetImageFiles = [PFFile?]()

    var refresher:UIRefreshControl!

    override func viewDidLoad() {
        super.viewDidLoad()

        if self.revealViewController() != nil {
            menuButton.target = self.revealViewController()
            menuButton.action = "revealToggle:"
            self.view.addGestureRecognizer(self.revealViewController().panGestureRecognizer())

            // Uncomment to change the width of menu
            //self.revealViewController().rearViewRevealWidth = 62
        }


        let theWidth = view.frame.size.width
        let theHeight = view.frame.size.height

        resultsTable.frame = CGRectMake(0, 0, theWidth, theHeight)

        let tweetBtn = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.Compose, target: self, action: Selector("tweetBtn_click"))

        let searchBtn = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.Search, target: self, action: Selector("searchBtn_click"))

        let buttonArray = NSArray(objects: tweetBtn, searchBtn)
        self.navigationItem.rightBarButtonItems = buttonArray as? [UIBarButtonItem]

        refresher = UIRefreshControl()
        refresher.tintColor = UIColor.blackColor()
        refresher.addTarget(self, action: "refresh", forControlEvents: UIControlEvents.ValueChanged)
        self.resultsTable.addSubview(refresher)


    }

    func refresh() {

        print("refresh table")

        refreshResults()

    }

    func refreshResults() {

        followArray.removeAll(keepCapacity: false)
        resultsNameArray.removeAll(keepCapacity: false)
        resulltsImageFiles.removeAll(keepCapacity: false)
        resultsTweetArray.removeAll(keepCapacity: false)
        resultsLocationArray.removeAll(keepCapacity: false)
        resultsHasImageArray.removeAll(keepCapacity: false)
        resultsTweetImageFiles.removeAll(keepCapacity: false)
        datetextfielArray.removeAll(keepCapacity: false)
        let followQuery = PFQuery(className: "follow")
        followQuery.whereKey("user", equalTo: PFUser.currentUser()!.username!)
        followQuery.addDescendingOrder("createdAt")

        let objects = followQuery.findObjects()

        for object in objects! {

            self.followArray.append(object.objectForKey("userToFollow") as! String)


        }



        let query:PFQuery = PFQuery(className: "tweets")




        query.whereKey("userName", containedIn: followArray)
        query.addDescendingOrder("createdAt")

        query.findObjectsInBackgroundWithBlock {
            (objects:[AnyObject]?, error:NSError?) -> Void in



            if error == nil {

                for object in objects! {


                    self.resultsNameArray.append(object.objectForKey("profileName") as! String)
                    self.resulltsImageFiles.append(object.objectForKey("photo") as! PFFile)
                    self.resultsTweetArray.append(object.objectForKey("tweet") as! String)
                    //resultsLocationArray

                     self.resultsLocationArray.append(object.objectForKey("tweetlocation") as! String)
                    self.resultsHasImageArray.append(object.objectForKey("hasImage") as! String)
                    self.resultsTweetImageFiles.append(object.objectForKey("tweetImage") as? PFFile)
                    self.datetextfielArray.append(object.objectForKey("datetextfield") as! String)

                    self.resultsTable.reloadData()

                }

                self.refresher.endRefreshing()

            }
        }

    }







    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    override func viewWillAppear(animated: Bool) {


        self.navigationController?.navigationBarHidden = false


        super.viewWillAppear(animated)
        let nav = self.navigationController?.navigationBar
        nav?.barStyle = UIBarStyle.Black
        nav?.tintColor = UIColor.whiteColor()
        nav?.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.whiteColor()]



        self.navigationItem.hidesBackButton = true

    }
     func numberOfSectionsInTableView(tableView: UITableView) -> Int {
        // Return the number of sections.
        return 1
    }


    override func viewDidAppear(animated: Bool) {

        refreshResults()

    }

    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

        return resultsNameArray.count


    }





    func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {




        if resultsHasImageArray[indexPath.row] == "yes" {

            return self.view.frame.size.width + 130


        } else {


            return 130

        }

    }
    //var theDtS = dtFormater.stringFromDate(self.dateArray[i])







    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {



          let cell:mainCell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! mainCell



        cell.tweetImg.hidden = true

        cell.locationTxt.text = self.resultsLocationArray[indexPath.row]

        cell.profileLbl.text = self.resultsNameArray[indexPath.row]
         cell.messageTxt.text = self.resultsTweetArray[indexPath.row]
        cell.datetextfield.text = self.datetextfielArray[indexPath.row]


        resulltsImageFiles[indexPath.row].getDataInBackgroundWithBlock {
            (imageData:NSData?, error:NSError?) -> Void in
            //resultsLocationArray

            if error == nil {

                let image = UIImage(data: imageData!)
                cell.imgView.image = image

            }

        }


        if resultsHasImageArray[indexPath.row] == "yes" {

            let theWidth = view.frame.size.width

           cell.tweetImg.frame = CGRectMake(0, 0, theWidth, theWidth)
            cell.tweetImg.hidden = false

            resultsTweetImageFiles[indexPath.row]?.getDataInBackgroundWithBlock({
                (imageData:NSData?, error:NSError?) -> Void in

                if error == nil {

                    let image = UIImage(data: imageData!)
                    cell.tweetImg.image = image

                }

            })

        }

        return cell

    }

    func tweetBtn_click() {

        print("tweet pressed")

        self.performSegueWithIdentifier("gotoTweetVCFromMainVC", sender: self)

    }

    func searchBtn_click() {

     print("search pressed")
        self.performSegueWithIdentifier("gotoUsersVCFromMainVC", sender: self)

    }





}

0 个答案:

没有答案
相关问题