2015-10-16 29 views
3

我正面臨着UITableViewUIViewController中的一個錯誤。 我會盡力解釋情況和我的問題。iOS - UIVIewController中的UITableView不顯示所有行[Swift]

我有一個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() 
    } 
} 

預先感謝您的回答! :)

+0

我有完全相同的問題。它發生在UICollectionViews和UITableViews中。如果我在UITabBarController中嵌入了包含其中一個視圖的ViewController,則只有一些單元格包含在Storyboard中指定的子視圖。 –

回答

1

對不起,很長一段時間沒有反饋。

我終於找到了解決我的問題。我在UINavigationController中嵌入了我的UIViewController,其中包含UITableView。經過一些研究,它似乎是這種情況的良好層級。

希望這會幫助別人。:)

1

自從MainStory董事會出來後,我不是很喜歡它,我在另一個晚上有同樣的錯誤,我不得不擺脫我的視圖控制器,並使一個視圖控制器出.xib文件。

  • 我從我的項目簡介中刪除的ViewController
  • 然後我去了AppDelagate並增加了一個變量回報

  • 之前創建自己的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()

基本上繪製窗口幀之後我們創建了ViewController和在導航控制器嵌入它,然後設置導航控制器作爲窗口的根視圖。

  • 那麼你必須創建一個xib文件文件>新建>文件選擇IOS /用戶界面;將其命名爲ViewController並進行創建。你可以添加UITableView控制器後,一切都應該正常工作。
+0

對這麼晚發送反饋感到抱歉。我不想創建一個外部文件。如果我的所有觀點都可以出現在我的故事板中,那將是完美的。 我還是不明白是什麼問題。爲什麼嵌入在UITabBarController中的UIViewController中的UITableView只顯示幾行?我做錯了什麼? –

相關問題