iOS - UIVIewController 中的 UITableView 不显示所有行 [Swift]
iOS - UITableView in UIVIewController doesn't display all rows [Swift]
我在 UIViewController
中遇到 UITableView
的错误。
我会尽力解释情况和我的问题。
我有一个 TabBarController
,其中一个视图是 UIViewController
和 UITableView
。我不使用 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 之后,一切都应该可以正常工作。
抱歉这么久没有反馈
我终于找到了解决问题的方法。我将包含 UITableView
的 UIViewController
嵌入到 UINavigationController
中。经过一些研究,这似乎是这个案例的良好层次结构。
希望这对其他人有所帮助。 :)
我在 UIViewController
中遇到 UITableView
的错误。
我会尽力解释情况和我的问题。
我有一个 TabBarController
,其中一个视图是 UIViewController
和 UITableView
。我不使用 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 之后,一切都应该可以正常工作。
抱歉这么久没有反馈
我终于找到了解决问题的方法。我将包含 UITableView
的 UIViewController
嵌入到 UINavigationController
中。经过一些研究,这似乎是这个案例的良好层次结构。
希望这对其他人有所帮助。 :)