当UITablesViews
嵌入ViewController
时,我注意到ViewController
内部UINavigationController
的一些奇怪行为。以下是一个简单原型的代码,用于选择要在场景中显示的不同UITableViews
,不包括TableView
的方法,并选择要显示的视图。
class ChooseTableViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
var tableViewA: UITableView = UITableView()
var tableViewB: UITableView = UITableView()
var colors: [String] = ["red", "blue", "green"]
var shapes: [String] = ["triangle", "circle", "square"]
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
tableViewA.frame = CGRectMake(0, 50, 320, 200)
tableViewA.delegate = self
tableViewA.dataSource = self
tableViewA.registerClass(UITableViewCell.self, forCellReuseIdentifier: "cellTableViewA")
tableViewB.frame = CGRectMake(0, 50, 320, 200)
tableViewB.delegate = self
tableViewB.dataSource = self
tableViewB.registerClass(UITableViewCell.self, forCellReuseIdentifier: "cellTableViewB")
self.view.addSubview(tableViewB)
self.view.addSubview(tableViewA)
tableViewB.hidden = true
let segmentSelectorLabels = ["one", "two"]
let segmentSelector = UISegmentedControl(items: segmentSelectorLabels)
segmentSelector.frame = CGRectMake(self.view.frame.width/2 - 50, self.view.frame.height - 100, 100, 40)
self.view.addSubview(segmentSelector)
segmentSelector.selectedSegmentIndex = 0
segmentSelector.addTarget(self, action: "chooseTable:", forControlEvents: .ValueChanged)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
...
}
以下是ChooseTableViewController
未嵌入UINavigationController
以及何时
在另一个项目中,只需添加
即可修复行为let emptyView:UIView = UIView()
和
self.view.addSubiew(emptyView)
emptyView
是第一个添加的子视图。这是一个让UITableViews
处于适当位置的hackney解决方案。对此行为的任何见解表示赞赏。
答案 0 :(得分:0)
将表格视图的帧原点y位置设置为0.查找"扩展边缘"故事板中此视图控制器的设置并关闭"在顶部条形图下#34;。
答案 1 :(得分:0)
取消选中"调整滚动视图插图"对于属性检查器中的viewcontroller或在代码中执行:
self.automaticallyAdjustsScrollViewInsets = NO;
(Obj-C)
self.automaticallyAdjustsScrollViewInsets = false
(斯威夫特)
更多解释:
如果此属性设置为YES / true,则视图控制器(如名称所示)会自动调整其视图层次结构中第一个滚动视图的插入内容。如果您的scrollview / tableview / textview / webview占据整个屏幕,并且部分内容通常由状态栏/导航栏/标签栏或工具栏隐藏,这可能会有所帮助。然后这些插入使您的内容显示在顶栏下方/底栏上方。这虽然只发生在scrollview / ...是视图层次结构中的 TOP MOST 子视图(=索引0处的子视图)时。为了让事情更清楚,我上传了四个例子: