代码如下:
感觉好繁琐哦。
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
应该这样的:
objc
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 = self.genderSegment ?? UISegmentedControl(items: ["Boy", "Girl", "All"]) cell.accessoryView = self.genderSegment default: cell.textLabel?.text = nil } return cell }