代码实现类似设置界面,是这样做吗?

图片描述

代码如下:
感觉好繁琐哦。

class SearchViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {

var searchTableView: UITableView?
var genderSegment: UISegmentedControl?

override func viewDidLoad() {
    super.viewDidLoad()

    self.title = "Search"

    self.searchTableView = UITableView(frame: CGRectMake(0, 0, self.view.frame.width, self.view.frame.height), style: UITableViewStyle.Grouped)
    self.searchTableView?.delegate = self
    self.searchTableView?.dataSource = self

    self.view.addSubview(self.searchTableView!)
}

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return 5
}

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell = UITableViewCell()
    cell.selectionStyle = UITableViewCellSelectionStyle.None

    switch indexPath.row {
    case 0:
        cell.textLabel?.text = "Gender"

        self.genderSegment = UISegmentedControl(items: ["Boy", "Girl", "All"])
        self.genderSegment?.frame.origin.x = self.view.frame.width - self.genderSegment!.frame.width - 10
        self.genderSegment?.frame.origin.y = cell.frame.height / 2 - self.genderSegment!.frame.height / 2

        cell.contentView.addSubview(self.genderSegment!)

    default:
        cell.textLabel?.text = nil
    }

    return cell
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
}

}

阅读 6.8k
6 个回答

这是代码实现的方式,如果是静态的TableView可以直接在StoryBoard里拖动Cell进去的=。=那么你一行代码都不用写的。。。

===

为什么点踩啊,这个问题还行啊,没搞懂。请点踩的同学出来说明一下?

如果确定是静态的话就都可以。
但是如果你还会更新应用程序的话,从工程学角度说,Dynamic Programming比hard coding要好。

应该这样的:

objcfunc tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell = UITableViewCell()
    cell.selectionStyle = UITableViewCellSelectionStyle.None

    switch indexPath.row {
    case 0:
        cell.textLabel?.text = "Gender"
        self.genderSegment = self.genderSegment ?? UISegmentedControl(items: ["Boy", "Girl", "All"])
        cell.accessoryView = self.genderSegment

    default:
        cell.textLabel?.text = nil
    }

    return cell
}

因为(大部分应用的)设置界面的内容已经固定,所以建议使用静态的tableView,通过拖拽来实现。这样既可以保证代码简介又不容易出现问题。

新手上路,请多包涵

gender这个label应该是cell的title吧。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题