3

Я столкнулся с ошибкой с моим UITableView в UIViewController. Я попытаюсь объяснить, в чем ситуация и моя проблема.iOS - UITableView в UIVIewController не отображает все строки [Swift]

У меня есть TabBarController, который имеет вид UIViewController с UITableView. Я не использую UITableViewController, потому что у меня есть некоторые специфические элементы управления на моем UIViewController.

Итак, когда мой UIViewController не является дочерним из моего TabBarController, все в порядке: все строки отображаются правильно.

Но, когда я установил свой UIViewController в качестве ребенка моего TabBarController, у меня есть эта ошибка: отображаются только некоторые строки (по одному на threem точно, во всех сценариях).

Я просто не понимаю, что происходит. Мой код работает, но только когда мой 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. Если я встраиваю ViewController, который содержит одно из этих представлений внутри UITabBarController, только некоторые ячейки содержат подсмотры, указанные в Storyboard. –

ответ

1

Извините, что долгое время без обратной связи.

Я, наконец, нашел решение моей проблемы. Я встроил свой UIViewController, который содержит UITableView в UINavigationController. После нескольких исследований, похоже, это хорошая иерархия для этого случая.

Надеюсь, это поможет кому-то справиться.:)

1

С тех пор, как вышли доски MainStory, я не большой поклонник этого, у меня была такая же ошибка в ту ночь, мне пришлось избавиться от моего контроллера просмотра и сделать контроллер просмотра из .xib файл.

  • я удалить ViewController из моего porject
  • Тогда я пошел к 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

Извините, что отправил отзыв так поздно. Я бы предпочел не создавать внешний файл. Если бы все мои взгляды могли быть в моей раскадровке, это было бы прекрасно. Я все еще не понимаю, в чем проблема. Почему UITableView в UIViewController, встроенный в UITabBarController, показывает только несколько строк? Я сделал что-то не так? –