繁体   English   中英

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

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

我在UIViewController遇到了我的UITableView的错误。 我会试着解释一下情况和问题。

我有一个TabBarController ,一个视图是一个带有UITableViewUIViewController 我没有使用UITableViewController因为我的UIViewController上有一些特定的控件。

所以,当我的UIViewController不是我的TabBarController的孩子时,一切都还可以:所有行都正确显示。

但是,当我将我的UIViewController设置为我的TabBarController的子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:函数下

  • 我添加了以下代码
    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文件File> New> File选择IOS / User Interface; 将其命名为ViewController并创建。 你可以添加UITableView控制器,一切都应该正常工作。

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

我终于找到了解决问题的方法。 我在UINavigationController嵌入了包含UITableView UIViewController 经过一些研究,似乎是这种情况的良好等级。

希望这有助于有人帮忙。 :)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM