tableView在旋转后显示

时间:2016-01-22 20:08:23

标签: ios swift cocoa tableview reload

当我运行它时,第一次打开History选项卡时,tableView上没有显示任何内容。只有在我旋转屏幕之后才显示出来,但它们仍然很有趣。只有在旋转屏幕后才能显示标签。并非有时候所有的历史都被展示出来。我读到我错过了一些初始化程序,但是一旦改变了东西我就会一直收到错误......任何帮助都会受到赞赏

//
    //  SecondViewController.swift
    //
    //  Created by Artiom Sobol on 1/3/16.
    //  Copyright © 2016 Artiom Sobol. All rights reserved.
    //

    import UIKit

    class History: UIViewController, UITableViewDataSource, UITableViewDelegate
    {
        // test variable
        var test: MyHistory!
        // array to store unarchived history
        var newHistory = [MyHistory]()

        //outlet for tableview

        @IBOutlet var tableView: UITableView!


        override func viewDidLoad()
        {

            //change the background
            self.view.backgroundColor = UIColor(patternImage: UIImage(named: "newBackground.jpg")!)

            super.viewDidLoad()
            tableView.delegate = self
            tableView.dataSource = self

            //self.tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "historyCell")

            self.tableView.reloadData()
            //unarchive any new data
            let defaults = NSUserDefaults.standardUserDefaults()
            if let savedPeople = defaults.objectForKey("MyHistory") as? NSData {
                newHistory = NSKeyedUnarchiver.unarchiveObjectWithData(savedPeople) as! [MyHistory]
            }

        }

        func tableView(tableView: UITableView,numberOfRowsInSection section: Int) -> Int
        {
            if (newHistory.count < 1)
            {
                return 1
            }
            else
            {
                return self.newHistory.count
            }
        }

        func numberOfSectionsInTableView(tableView: UITableView) -> Int
        {
            return 1
        }

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

            let cell = tableView.dequeueReusableCellWithIdentifier("historyCell", forIndexPath: indexPath) as! historyCell
            let person = newHistory[indexPath.item]
            let defaults2 = NSUserDefaults.standardUserDefaults()

            print("This is count", newHistory.count)

            if let savedPeople = defaults2.objectForKey("MyHistory") as? NSData {
                newHistory = NSKeyedUnarchiver.unarchiveObjectWithData(savedPeople) as! [MyHistory]
            }



           // cell.durationLabel.text = String(person.durationNumber)
            let (hour,minutes,seconds) = secondsToHoursMinutesSeconds(person.durationNumber)

            if(seconds < 10 && minutes < 10)
            {
                cell.durationLabel.text = "0\(hour):0\(minutes):0\(seconds)"
            }
            else if(seconds > 9 && minutes < 10)
            {
                cell.durationLabel.text = "0\(hour):0\(minutes):\(seconds)"
            }
            else if(seconds > 9 && minutes > 9)
            {
                cell.durationLabel.text = "0\(hour):\(minutes):\(seconds)"
            }
            else if(seconds < 10 && minutes > 9)
            {
                cell.durationLabel.text = "0\(hour):\(minutes):0\(seconds)"
            }


            cell.kicksLabel.text = String(person.kicksNumber)

            return cell
        }


        func secondsToHoursMinutesSeconds (seconds : Int) -> (Int, Int, Int)
        {
            return (seconds / 3600, (seconds % 3600) / 60, (seconds % 3600) % 60)
        }

        override func viewWillAppear(animated: Bool)
        {
            super.viewWillAppear(animated)
            self.tableView.reloadData()

        }

    }

3 个答案:

答案 0 :(得分:0)

非常确定你需要在let和if的中间添加你的声明。这将允许您访问API中的必要密码。然后,端点将允许您对源代码的请求,而不是将其视为SSL错误。

答案 1 :(得分:0)

一个可疑的事情是你使用indexPath.item而不是indexPath.row来索引newHistory []。当indexPath应用于UITableView时,我并不完全确定.item是否已正确设置。

答案 2 :(得分:0)

creating custom tableview cells in swift

这是解决问题的方法......

取消勾选“大小班级”复选框

即使重新打开它仍然有效