ios - 代码实现类似设置界面,是这样做吗?
高洛峰
高洛峰 2017-04-17 13:22:51
[iOS讨论组]

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

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

}

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(6)
PHP中文网

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

===

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

PHP中文网

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

PHPz

应该这样的:

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,通过拖拽来实现。这样既可以保证代码简介又不容易出现问题。

ringa_lee

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

黄舟

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

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号