如何限制分割视图控制器左侧的表视图的大小?

时间:2016-05-31 17:08:47

标签: ios swift uitableview

enter image description here我有一个UISplitViewController。所以我希望看到我的主视图(即表格视图)达到其内容的大小(考虑它只有3个元素)。 我尝试使用self.tableview.contentsize但没有成功。请帮我找到解决方案。

每个单元格的高度为44。 这是我写的代码。

class AccountTableViewController: UITableViewController {
var filterList = [String]()
var selectedIndex = -1

override func viewDidLoad() {
    super.viewDidLoad()
    filterList = ["All Accounts","Business Accounts","Person Accounts"]

    self.tableView.contentSize = CGSize(width: 600, height: 44*3);
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

// MARK: - Table view data source

override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
    // #warning Incomplete implementation, return the number of sections
    return 1
}

override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    // #warning Incomplete implementation, return the number of rows
    return 3
}


override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCellWithIdentifier("accountCell", forIndexPath: indexPath)

    cell.textLabel?.text = filterList[indexPath.row]
    return cell
}}

1 个答案:

答案 0 :(得分:3)

我抓住Ray Wenderlich的示例项目(https://www.raywenderlich.com/94443/uisplitviewcontroller-tutorial-getting-started)作为起点。这就是你在下面的图片中看到的修改。

在Interface Builder中,首先确保您的设置使用AutoLayout: enter image description here

然后在原型单元格下面拖动一个UIView(我将背景设置为橙色以便您可以看到它的位置),并根据您的喜好制作尺寸: enter image description here

我向刚刚创建的新UIView添加了一些字段,并添加了约束,以便您可以看到它们在运行时根据内容移动。 (你会注意到故事板视图控制器在IB中比在运行时宽得多。)这是我添加的约束: enter image description here

最后,运行应用程序 - 无需在代码中执行任何操作: enter image description here

一旦你使这个基本部分工作,你就可以在代码中配置视图的大小。如果需要,您可以在IB中设计视图,或者在代码中设置视图 - 无论您喜欢什么。

以下是表中只有一行的示例:

enter image description here

这是一个表中没有行的例子:

enter image description here