系统控件和自定义控件
2016-01-07 20:58
253 查看
如下图创建一个导航视图控制器 三个场景,第二个场景和第三个有线连接modal
上面的Edit是一个item
中间那个的控制器
person 类
第三个视图的
delelegate
上面的是系统的控件如下图写一个自定义的控件
这个是放图片的地方
如图创建一个场景
下面是场景的控制器
视图里面的view控制器
startdelegate
上面的Edit是一个item
中间那个的控制器
import UIKit class EditModeTableviewControll: UITableViewController { var persons = Person.getDate() var per:Person? override func viewDidLoad() { super.viewDidLoad() //自定义的 self.navigationItem.rightBarButtonItem=editButtonItem() } @IBAction func toEdit(sender: UIBarButtonItem) { tableView.setEditing(true, animated: true) } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() } override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return persons.count } override func tableView(tableView: UITableView, willSelectRowAtIndexPath indexPath: NSIndexPath) -> NSIndexPath? { per = persons[indexPath.row] return indexPath } override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { let cell=tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath:indexPath) let p=persons[indexPath.row] cell.textLabel?.text = p.name return cell } //这个函数实现功能 override func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) { if editingStyle == .Delete { persons.removeAtIndex(indexPath.row) tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Fade) }else{ let p = Person(name:"new") persons.append(p) tableView.insertRowsAtIndexPaths([NSIndexPath(forRow:indexPath.row+1,inSection:0)], withRowAnimation: .Fade) } } //写行样式 override func tableView(tableView: UITableView, editingStyleForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCellEditingStyle { if indexPath.row == persons.count - 1{ return .Insert }else{ return .Delete } } //跳转的时候传值 override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { let dest = segue.destinationViewController as! myviewdetil dest.person=per! dest.persondel = self } } //进行刷新 extension EditModeTableviewControll : persondelegate { func person() { tableView.reloadData() } }
person 类
import Foundation class Person{ var name:String init(name:String){ self.name = name } static func getDate()->[Person]{ return [ Person(name:"1111"), Person(name:"2222"), Person(name:"3333"), Person(name:"4444") ] } }
第三个视图的
import UIKit class myviewdetil: UIViewController { var person:Person? var persondel: persondelegate? @IBOutlet weak var mytxt: UITextField! override func viewDidLoad() { super.viewDidLoad() mytxt.text = person?.name } @IBAction func tojumplist(sender: UIButton) { person?.name = mytxt.text! persondel?.person() dismissViewControllerAnimated(true, completion: nil) } }
delelegate
import Foundation protocol persondelegate{ func person() }
上面的是系统的控件如下图写一个自定义的控件
这个是放图片的地方
如图创建一个场景
下面是场景的控制器
import UIKit class mytableviewcontroll: UIViewController { @IBOutlet weak var rartingyou: RatingControll! @IBOutlet weak var mylable: UILabel! override func viewDidLoad() { super.viewDidLoad() let vc = view.viewWithTag(1) as! RatingControll vc.startDe = self rartingyou.rating = 3 mylable.text = "当前评价值指数:\(rartingyou.rating)星" // Do any additional setup after loading the view. } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } } extension mytableviewcontroll : startdelegate { func Startcount(sender:RatingControll) { mylable.text = "当前评价值指数:\(sender.rating)星" } }
视图里面的view控制器
import UIKit class RatingControll:UIView{ var startDe:startdelegate? var rating = 0 //表示当前好评值 var ratingcount = 5 //内部数量 let spacing = 5 //表示按钮间的距离 var buttons = [UIButton]() //把按钮创建出来 required init?(coder aDecoder: NSCoder){ super.init(coder:aDecoder) for _ in 0..<ratingcount { let btn = UIButton(frame: CGRect(x:0, y:0, width:44, height:44)) btn.addTarget(self, action: "btnClicked:", forControlEvents: .TouchDown) btn.setImage(UIImage(named: "empty"), forState: .Normal) btn.setImage(UIImage(named: "filled"), forState: .Selected) btn.adjustsImageWhenHighlighted = false buttons.append(btn) addSubview(btn) } } //代表星星的位置 override func layoutSubviews() { for (index,btn) in buttons.enumerate(){ btn.frame.origin.x = CGFloat((44 + spacing ) * index) } update() } // func btnClicked(btn: UIButton) { rating = buttons.indexOf(btn)!+1 update() // 进行传參 startDe?.Startcount(self) // print("bynclick") } //设置星星的样式 func update() { for (index,btn) in buttons.enumerate() { if index < rating { btn.selected = true }else { btn.selected = false } } }
startdelegate
import Foundation protocol startdelegate{ func Startcount(sender:RatingControll); }
相关文章推荐
- 计算机组成原理往年试题以及答案(tzf!!!)
- HDU 1114 Piggy-Bank(完全背包)
- jquery中的$.ajax函数详解
- IP地址分类详解
- Linux patch命令举例介绍
- 接上篇,访问资源文件,获取内容
- 常用的一些正则表达式
- .html 、.htm 、 .shtml 以及 .shtm 四种扩展名的文件区别
- 我搬家了
- Java基础:定时器Timer
- Hadoop构架概览
- 16进制转8进制代码(初学级别)
- CSS
- 自定义label和搜索框
- 委托2和索引
- 字符排序
- win + R 快速启动程序
- 蒙特卡洛法之MATLAB实现
- include包含头文件的语句中,双引号和尖括号的区别
- Matrix的preXxx,setXxx,postXxx方法执行顺序的区分