Swift 爬行篇 UITableView

来源:互联网 发布:知乎页面字体 编辑:程序博客网 时间:2024/04/30 04:15

UITableView

   就是表格,但是只有行没有列

   创建格式有Plain和Group

   而实现函数则有两个代理

   delegate , 处理tableview中的逻辑关系

   dataSource ,资源数据,用来插入删除等功能


1.创建

设置全局变量

    var _MyTableView : UITableView?    //全局的Tableview    var leftBtn:UIButton?              //左边按钮,用于删除等操作    var rightButtonItem:UIBarButtonItem?  //右边按钮,用于添加    var items = ["武汉","上海","北京","深圳","广州","重庆","香港","台海","天津"]
 创建TableView

 /*重用机制    当表行滑出屏幕时讲其UITableViewCell放入到重用队列中    当表行重新划入屏幕时,则将其UITableViewCell从重用队列中取出来    由此减少每次对生成和施放内存的操作    */    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell{       let cellid = "my cellid"  //tableview行的标志       var cell: UITableViewCell? = tableView.dequeueReusableCellWithIdentifier(cellid, forIndexPath: indexPath)//获取行标志       if (cell == nil){            cell = UITableViewCell(style:.Default, reuseIdentifier: cellid) //空的话则重新创建一个,cellid表示新创建的UITableViewCell       }       cell!.textLabel?.text = self.items[indexPath.row]       cell!.imageView?.image = UIImage(named: "green.png")       return cell!  //返回    }
 重写初始化函数

  //父类的初始化函数    override func viewDidLoad() {        super.viewDidLoad()                let Rc:CGRect = self.view.bounds          _MyTableView = UITableView(frame: Rc, style:UITableViewStyle.Plain)        _MyTableView!.delegate = self        _MyTableView!.dataSource = self        //setupLeftBarButtonItem()        setupRightBarButtonItem()        self.view.addSubview(_MyTableView!)    }

设置表格中的数量

 //返回表中的数量    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int{        return items.count    }


设置点击事件
  //设置点击事件    func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath){        //let alert: UIAlertController = UIAlertController(title: "提示", message: "你选择的是\(self.dataArr[indexPath.row])", preferredStyle: UIAlertControllerStyle.Alert)        //let okAction = UIAlertAction(title: "好的", style: UIAlertActionStyle.Default, handler: nil)       // alert.addAction(okAction)       // self.presentViewController(alert, animated: true, completion: nil)    }


添加右边按钮和左边按钮以及其事件

//加左边按钮    func setupLeftBarButtonItem()    {        leftBtn = UIButton(type: UIButtonType.Custom )        self.leftBtn!.frame = CGRectMake(0,0,50,40)        self.leftBtn?.setTitleColor(UIColor.redColor(), forState: UIControlState.Normal)        self.leftBtn?.setTitle("Edit", forState: UIControlState.Normal)        self.leftBtn!.tag = 100        self.leftBtn?.addTarget(self, action: "leftBarButtonItemClicked", forControlEvents: UIControlEvents.TouchUpInside)        let barButtonItem = UIBarButtonItem(customView: self.leftBtn!)        self.navigationItem.leftBarButtonItem = barButtonItem    }        //左边按钮事件    func leftBarButtonItemClicked()    {        print("leftBarButton")        if (self.leftBtn!.tag == 100)        {            self._MyTableView?.setEditing(true, animated: true)            self.leftBtn!.tag = 200            self.leftBtn?.setTitle("Done", forState: UIControlState.Normal)            //将增加按钮设置不能用            self.rightButtonItem!.enabled=false        }        else        {            //恢复增加按钮            self.rightButtonItem!.enabled=true            self._MyTableView?.setEditing(false, animated: true)            self.leftBtn!.tag = 100            self.leftBtn?.setTitle("Edit", forState: UIControlState.Normal)        }            }    //加右边按钮    func setupRightBarButtonItem()    {        self.rightButtonItem = UIBarButtonItem(title: "Add", style: UIBarButtonItemStyle.Plain, target: self,action: "rightBarButtonItemClicked")        self.navigationItem.rightBarButtonItem = self.rightButtonItem            }    //增加事件    func rightBarButtonItemClicked()    {         print("rightBarButton")        let row = self.items.count        let indexPath = NSIndexPath(forRow:row,inSection:0)        //self.items.append("杭州")        self._MyTableView?.insertRowsAtIndexPaths([indexPath], withRowAnimation: UITableViewRowAnimation.Left)                    }

设置分组的TableView

初始化时将风格设置为Group,并且在设置cell名称是应该使用多个数组

<pre name="code" class="plain"><p class="p1"><span class="s1">var</span><span class="s2"> items = [[</span><span class="s3">"</span><span class="s4">武汉</span><span class="s3">"</span><span class="s2">,</span><span class="s3">"</span><span class="s4">上海</span><span class="s3">"</span><span class="s2">,</span><span class="s3">"</span><span class="s4">北京</span><span class="s3">"</span><span class="s2">],[</span><span class="s3">"</span><span class="s4">深圳</span><span class="s3">"</span><span class="s2">,</span><span class="s3">"</span><span class="s4">广州</span><span class="s3">"</span><span class="s2">,</span><span class="s3">"</span><span class="s4">重庆</span><span class="s3">"</span><span class="s2">],[</span><span class="s3">"</span><span class="s4">香港</span><span class="s3">"</span><span class="s2">,</span><span class="s3">"</span><span class="s4">台海</span><span class="s3">"</span><span class="s2">,</span><span class="s3">"</span><span class="s4">天津</span><span class="s3">"</span><span class="s2">]]</span></p>
self.tableView=UITableView(frame:self.view.frame,style:UITableViewStyle.Grouped)

 设置table的数量和每个table的cell数量

 //总行数    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int{        return self.items[section].count - 1    }    func numberOfSectionsInTableView(tableView: UITableView) -> Int {        return items.count    }


将每个数组中的第一个元素作为title

 func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -> String?{        return items[section][0]    }



0 0