iOS – UIVIewController中的UITableView不显示所有行

我正面临UIViewController UITableView一个错误。 我会试着解释一下情况和我的问题。

我有一个TabBarController其中一个视图是一个UITableViewUIViewController 。 我不使用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董事会出来,我不是一个很大的粉丝,有一天晚上,我有同样的错误,我不得不摆脱我的视图控制器,并使一个.xib文件的视图控制器。

  • 我从我的项目中删除了ViewController
  • 然后我去了AppDelagate并添加了一个variables来创build我自己的ViewController
    var viewController: ViewController?
  • 返回之前在didFinishLaunchingWithOptions:函数下

  • 我添加了下面的代码
    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()

基本上在绘制窗口框架之后,我们创build了ViewController并将其embedded到导航控制器中,然后将导航控制器设置为窗口的根视图。

  • 所以你必须创build一个xib文件文件>新build>文件selectIOS /用户界面; 将其命名为ViewController并创build。 你可以添加UITableView控制器之后,一切都应该正常工作。

很抱歉,很长一段时间没有反馈。

我终于find了解决我的问题。 我将包含UITableView UIViewControllerembedded到UINavigationController 。 经过一些研究,似乎是这种情况下的好的层次结构。

希望这会帮助别人。 🙂