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

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

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

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()
}

}


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


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


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


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

===

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


首先,我觉得楼主你既然决定入这一行了,还怕这点繁琐么?这么一点代码能达到这样的功能已经很OK,而且我觉得肯定是引用了某些UI类库的吧,你写的代码又有多少呢?
我想问的是:你问这个问题究竟希望会得到怎样的回答?是解决问题?得到安慰?发现改变世界的那一行简单的代码?还是你这个问题你只是想来秀一下你的代码?这些种种我再怎么考虑都觉得这个问题都不应该在这里出现,或者说代码实现类似设置界面,是这样做吗根本就不是一个问题

好吧,我承认,我是来吐槽的。虽然我不懂OC,不懂Swift


应该这样的:

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
}
【热门文章】
【热门文章】