iOS - UIVIewController 中的 UITableView 不显示所有行 [Swift]

iOS - UITableView in UIVIewController doesn't display all rows [Swift]

我在 UIViewController 中遇到 UITableView 的错误。 我会尽力解释情况和我的问题。

我有一个 TabBarController,其中一个视图是 UIViewControllerUITableView。我不使用 UITableViewController,因为我的 UIViewController.

有一些特定的控件

因此,当我的 UIViewController 不是我的 TabBarController 的子级时,一切正常:所有行都正确显示。

但是,当我将我的 UIViewController 设置为我的 TabBarController 的子级时,我遇到了这个错误:只显示了一些行(在所有情况下正好超过三行)。

我只是不明白发生了什么。我的代码似乎可以工作,但前提是我的 UIViewController 不是我的 TabBarController 的子代。

在这种情况下还有其他方法可以添加吗?

有我的代码 UIViewController :

class ProfileController: UIViewController, UITableViewDataSource, UITableViewDelegate {

    @IBOutlet weak var tableChallenges: UITableView!
    @IBOutlet weak var profileTabs: UISegmentedControl!

    var pageViewController : UIPageViewController!

    override func viewDidLoad() {
        super.viewDidLoad()

        self.tableChallenges.dataSource = self
        self.tableChallenges.delegate = self

        self.tableChallenges.reloadData()

    }

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

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

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

        let cell = tableView.dequeueReusableCellWithIdentifier("challengeCustomCell", forIndexPath: indexPath) as! ChallengeCustomCell

        switch(self.profileTabs.selectedSegmentIndex) {
            case 0:
                cell.challengeSuccededOrFailedImage.hidden = true
            break

            case 1:
                cell.challengeSuccededOrFailedImage.hidden = false
                cell.challengeSuccededOrFailedImage.image = UIImage(named: "challenge-succeded")
            break

            case 2:
                cell.challengeSuccededOrFailedImage.hidden = false
                cell.challengeSuccededOrFailedImage.image = UIImage(named: "challenge-failed")
            break

            case 3:
                cell.challengeSuccededOrFailedImage.hidden = true
            break

            default: break

        }

        return cell
    }

    @IBAction func selectedItemChanged(sender: AnyObject) {
        self.tableChallenges.reloadData()
    }
}

提前感谢您的回答! :)

自从 MainStory 板问世以来,我就不是它的忠实粉丝,前几天晚上我遇到了同样的错误,我不得不摆脱我的 View Controller 并从 .xib 文件中创建一个 View Controller .

  • 我从我的项目
  • 中删除了 ViewController
  • 然后我去了 AppDelagate 并添加了一个变量来创建我自己的 ViewController
    var viewController: ViewController?
  • didFinishLaunchingWithOptions:函数前return

  • 我添加了以下代码
    self.window = UIWindow(frame:UIScreen.mainScreen().bounds) self.viewController = ViewController(nibName:"ViewController",bundle:nil) var navController = UINavigationController(rootViewController: self.viewController!) navController.navigationBarHidden = true self.window?.rootViewController = navController self.window?.makeKeyAndVisible()

基本上在绘制 window 帧之后我们创建了 ViewController 并将其嵌入到导航控制器中,然后将导航控制器设置为 window 的根视图。

  • 那么你必须创建一个 xib 文件 File > New > File choose IOS/User Interface;将其命名为 ViewController 并创建。在您可以添加 UITableView Controller 之后,一切都应该可以正常工作。

抱歉这么久没有反馈

我终于找到了解决问题的方法。我将包含 UITableViewUIViewController 嵌入到 UINavigationController 中。经过一些研究,这似乎是这个案例的良好层次结构。

希望这对其他人有所帮助。 :)