swift第四周實訓(xùn)心得

2016年12月11日 星期日 晚

這周總結(jié)的較少攒暇,時間也比較緊施敢,希望大家見諒,但總結(jié)的都是比較重要的部分辐脖,希望有助于大家的學(xué)習(xí)和復(fù)習(xí)饲宛,下周一定會給大家一個更詳細(xì)的總結(jié),么么噠??

day15

微信界面

  • 新建一個JNTViewController.swift繼承自UITabBarController嗜价,在其中進(jìn)行控制器的創(chuàng)建:
override func viewDidLoad() {
        super.viewDidLoad()
        let vc = ViewController()  //創(chuàng)建控制器
        self.addChildVC(vc: vc, title: "消息", image: UIImage(named: "tabbar_mainframe")!, selectImage: UIImage(named: "tabbar_mainframeHL")!.withRenderingMode(.alwaysOriginal))
        
        let contact = ContactViewController()
        self.addChildVC(vc: contact, title: "聯(lián)系人", image: UIImage(named: "tabbar_contacts")!, selectImage: UIImage(named: "tabbar_contactsHL")!.withRenderingMode(.alwaysOriginal))
        
        let discover = DiscoverViewController()
         self.addChildVC(vc: discover, title: "發(fā)現(xiàn)", image: UIImage(named: "tabbar_discover")!, selectImage: UIImage(named: "tabbar_discoverHL")!.withRenderingMode(.alwaysOriginal))
        
        let I = IViewController()
        self.addChildVC(vc: I, title: "我", image: #imageLiteral(resourceName: "tabbar_me.png"),selectImage: #imageLiteral(resourceName: "tabbar_meHL.png").withRenderingMode(.alwaysOriginal))
        
    }

    //1 控制器
    //2 tabbar文字
    //3 圖片
    //4 選中圖片
    func addChildVC(vc: UIViewController, title: String, image: UIImage, selectImage: UIImage) {
        //設(shè)置導(dǎo)航控制器
        let vcN = JNViewController(rootViewController: vc)
        //把導(dǎo)航控制器設(shè)置為子控制器給tabbar管理
        self.addChildViewController(vcN)
        //設(shè)置文字艇抠、圖片
        vcN.tabBarItem = UITabBarItem(title: title, image: image, selectedImage: selectImage)
        let color = UIColor.init(colorLiteralRed: 40.0 / 255.0, green: 177.0 / 255.0, blue: 26.0 / 255.0, alpha: 1.0)
        //修改文字
        let dic = [NSFontAttributeName: UIFont.systemFont(ofSize: 12),NSForegroundColorAttributeName: color]
        vcN.tabBarItem.setTitleTextAttributes(dic, for: .selected)
        
        let dic1 = [NSFontAttributeName: UIFont.systemFont(ofSize: 12), NSForegroundColorAttributeName: UIColor.lightGray]
        vcN.tabBarItem.setTitleTextAttributes(dic1, for: .normal)
        
        self.addChildViewController(vcN)
    }
  • 新建一個JNViewController.swift繼承自UINavigationController,用來修改狀態(tài)欄的屬性:
override func viewDidLoad() {
        super.viewDidLoad()
        let color = UIColor.init(colorLiteralRed: 55.0 / 255.0, green: 53 / 255.0,blue: 60 / 255.0, alpha: 1.0)
        self.navigationBar.barTintColor = color;
        //修改狀態(tài)欄的顏色
        let dic = [NSFontAttributeName: UIFont.boldSystemFont(ofSize: 20),NSForegroundColorAttributeName: UIColor.white]
        self.navigationBar.titleTextAttributes = dic
    }

可以把ViewController設(shè)置為微信下邊的第一個久锥,再分別新建微信的下邊另外三個ViewController练链,分別為:ContactViewController.swift繼承自UIViewController;DiscoverViewController.swift繼承自UIViewController奴拦,DiscoverTableViewCell.swift繼承自UITableViewCell媒鼓;IViewController.swift繼承自UIViewController,ITableViewCell.swift和I2TableViewCell.swift都繼承自UITableViewCell错妖;

  • 在DiscoverViewController.swift中進(jìn)行“發(fā)現(xiàn)”的設(shè)置:

    • 先創(chuàng)建一個類
  class CellMode : NSObject {
    var title : String? = nil
    var image : String? = nil
}
  • DiscoverViewController要繼承UITableViewDelegate, UITableViewDataSource兩個協(xié)議绿鸣;

    • 在DiscoverViewController中鍵入:
//放分組對應(yīng)的數(shù)據(jù)
  var arr : [[CellMode]] = [[CellMode]]()
  
  var tableView : UITableView? = nil
  override func viewDidLoad() {
      super.viewDidLoad()
      self.title = "發(fā)現(xiàn)"
      self.view.backgroundColor = #colorLiteral(red: 1, green: 1, blue: 1, alpha: 1)
      self.tableView = UITableView(frame: self.view.bounds, style: .grouped)
      self.tableView?.delegate = self
      self.tableView?.dataSource = self
      self.view.addSubview(self.tableView!)
      self.load()
      
      //注冊
      self.tableView?.register(DiscoverTableViewCell.self, forCellReuseIdentifier: "tag")
      
  }
  
  func load() {
      let mode1 = CellMode()
      mode1.title = "朋友圈"
      mode1.image = "ff_IconShowAlbum"
      let arr = [mode1]
      
      let mode2 = CellMode()
      mode2.title = "掃一掃"
      mode2.image = "ff_IconQRCode"
      
      let mode3 = CellMode()
      mode3.title = "搖一搖"
      mode3.image = "ff_IconShake"
      let arr1 = [mode2, mode3]
      
      let mode4 = CellMode()
      mode4.title = "附近的人"
      mode4.image = "ff_IconLocationService"
      
      let mode5 = CellMode()
      mode5.title = "漂流瓶"
      mode5.image = "ff_IconBottle"
      let arr2 = [mode4, mode5]
      
      
      let mode6 = CellMode()
      mode6.title = "購物"
      mode6.image = "CreditCard_ShoppingBag"
      
      let mode7 = CellMode()
      mode7.title = "游戲"
      mode7.image = "Userguide_Gamecenter_icon"
      let arr3 = [mode6, mode7]
      
      self.arr.append(arr)
      self.arr.append(arr1)
      self.arr.append(arr2)
      self.arr.append(arr3)
      
  }
  
  func numberOfSections(in tableView: UITableView) -> Int {
          return self.arr.count
  }
  
  func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
          return self.arr[section].count
  }
  
  func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
      let cell = tableView.dequeueReusableCell(withIdentifier: "tag", for: indexPath) as! DiscoverTableViewCell
      //取出模型
      let m = self.arr[indexPath.section][indexPath.row]
      //cell.imageV?.image = UIImage(named: m.image!)
      //cell.titleLabel?.text = m.title
      cell.model = m
      //取消選中按鈕
      cell.selectionStyle = .none
      //詳情按鈕
      cell.accessoryType = .disclosureIndicator
      
      return cell
  }
  
  //調(diào)整上頁邊距
  func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
      return 0.1
  }
  
  func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
      return UIView(frame: CGRect(x: 0, y: 0, width: 0, height: 0))
  }
  
  //每個分組之間的間距
  func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
      return 10
  }
  • 在DiscoverTableViewCell中鍵入:
private var imageV : UIImageView? = nil
    private var titleLabel : UILabel? = nil
    var model : CellMode {
        set {
            //newValue傳進(jìn)來默認(rèn)值
            self.imageV?.image = UIImage(named: newValue.image!)
            self.titleLabel?.text = newValue.title
        }
        get {
            return CellMode()
        }
    }
    
    override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
        super.init(style: style, reuseIdentifier: reuseIdentifier)
        self.imageV = UIImageView(frame: CGRect(x: 15, y: 5, width: 30, height: 30))
        self.addSubview(self.imageV!)
        
        self.titleLabel = UILabel(frame: CGRect(x: 55, y: 5, width: 200, height: 30))
        self.addSubview(self.titleLabel!)
    }
    
    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    override func awakeFromNib() {
        super.awakeFromNib()
        
    }
  • 在IViewController中新建一個類:
class CellMode1 : NSObject {
    var image1 : String? = nil
    var title1 : String? = nil
    var title2 : String? = nil
    var image2 : String? = nil
}
  • IViewController要繼承UITableViewDelegate, UITableViewDataSource兩個協(xié)議;

  • 在IViewController中鍵入:

//放分組對應(yīng)數(shù)據(jù)
    var arr : [[CellMode1]] = [[CellMode1]]()
    var tableView : UITableView? = nil
    
    override func viewDidLoad() {
        super.viewDidLoad()
        self.view.backgroundColor = #colorLiteral(red: 1, green: 1, blue: 1, alpha: 1)
        self.title = "我"
        self.tableView = UITableView(frame: self.view.bounds, style: .grouped)
        self.tableView?.delegate = self
        self.tableView?.dataSource = self
        self.view.addSubview(self.tableView!)
        self.load()
        
        //注冊
        self.tableView?.register(I2TableViewCell.self, forCellReuseIdentifier: "tag")
        self.tableView?.register(ITableViewCell.self, forCellReuseIdentifier: "tag2")

    }
    func load() {
        let mode0 = CellMode1()
        mode0.image1 = "nv.jpg"
        mode0.title1 = "大叔的小蘿莉"
        let arr0 = [mode0]
        
        let mode1 = CellMode1()
        mode1.title2 = "相冊"
        mode1.image2 = "MoreMyAlbum"
        let mode2 = CellMode1()
        mode2.title2 = "收藏"
        mode2.image2 = "MoreMyFavorites"
        let mode3 = CellMode1()
        mode3.title2 = "錢包"
        mode3.image2 = "MoreMyBankCard"
        let mode4 = CellMode1()
        mode4.title2 = "卡包"
        mode4.image2 = "MyCardPackageIcon"
        let arr1 = [mode1, mode2, mode3, mode4]
        
        let mode5 = CellMode1()
        mode5.title2 = "表情"
        mode5.image2 = "MoreExpressionShops"
        let arr2 = [mode5]
        
        let mode6 = CellMode1()
        mode6.title2 = "設(shè)置"
        mode6.image2 = "MoreSetting"
        let arr3 = [mode6]
        
        self.arr.append(arr0)
        self.arr.append(arr1)
        self.arr.append(arr2)
        self.arr.append(arr3)

    }
    
    func numberOfSections(in tableView: UITableView) -> Int {
        return self.arr.count
    }
    
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return self.arr[section].count
    }
    
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        if indexPath.section == 0 {
         let cell = tableView.dequeueReusableCell(withIdentifier: "tag", for: indexPath) as! I2TableViewCell
        //取出模型
        let m = self.arr[indexPath.section][indexPath.row]
        //cell.imageH?.image = UIImage(named: m.image1!)
        //cell.nameLabel?.text = m.title1
            cell.mode2 = m
        //取消選中按鈕
        cell.selectionStyle = .none
        //詳情按鈕
        cell.accessoryType = .disclosureIndicator
        return cell
        } else {
           let cell = tableView.dequeueReusableCell(withIdentifier: "tag2", for: indexPath) as! ITableViewCell
            let m = self.arr[indexPath.section][indexPath.row]
            //cell.imageV?.image = UIImage(named: m.image2!)
            //cell.titleLabel?.text = m.title2
            cell.mode1 = m

            //取消選中按鈕
            cell.selectionStyle = .none
            //詳情按鈕
            cell.accessoryType = .disclosureIndicator
            
            return cell

        }
        //cell.model = m
    }
    
    func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
        if indexPath.section == 0 {
            return 100
        } else {
            return 50
        }
    }
    
    //調(diào)整上頁邊距
    func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
        return 0.1
    }
    
    func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
        return UIView(frame: CGRect(x: 0, y: 0, width: 0, height: 0))
    }
    
    //每個分組之間的間距
    func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
        return 10
    }
  • 在ITableViewCell中鍵入:
var imageV : UIImageView? = nil
    var titleLabel : UILabel? = nil
    
    var mode1 : CellMode1 {
        set {
            self.imageV?.image = UIImage(named: newValue.image2!)
            self.titleLabel?.text = newValue.title2
        }
        get {
            return CellMode1()
        }
    }
    
    override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
        super.init(style: style, reuseIdentifier: reuseIdentifier)
    
        self.imageV = UIImageView(frame: CGRect(x: 15, y: 5, width: 30, height: 30))
        self.addSubview(self.imageV!)
        
        self.titleLabel = UILabel(frame: CGRect(x: 55, y: 5, width: 200, height: 30))
        self.addSubview(self.titleLabel!)
        
    }
    
    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    override func awakeFromNib() {
        super.awakeFromNib()
        // Initialization code
    }
  • 在I2TableViewCell中鍵入:
var imageH : UIImageView? = nil
    var nameLabel : UILabel? = nil
    var mode2 : CellMode1 {
        set {
            self.imageH?.image = UIImage(named: newValue.image1!)
            self.nameLabel?.text = newValue.title1
        }
        get {
            return CellMode1()
        }
    }

    override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
        super.init(style: style, reuseIdentifier: reuseIdentifier)
        self.imageH = UIImageView(frame: CGRect(x: 15, y: 5, width: 80, height: 80))
        self.imageH?.layer.cornerRadius = 8
        self.imageH?.layer.masksToBounds = true
        self.addSubview(self.imageH!)
        
        self.nameLabel = UILabel(frame: CGRect(x: 105, y: 5, width: 200, height: 40))
        self.nameLabel?.font = UIFont.systemFont(ofSize: 20)
        self.addSubview(self.nameLabel!)
        
    }
    
    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    override func awakeFromNib() {
        super.awakeFromNib()
        // Initialization code
    }
  • 在ViewController中對背景顏色進(jìn)行設(shè)置:
override func viewDidLoad() {
        super.viewDidLoad()
        self.view.backgroundColor = #colorLiteral(red: 1, green: 1, blue: 1, alpha: 1)
    }
  • 運行結(jié)果:

day16

新聞頁面

  • 新建三個UIViewCell暂氯,分別為:TableViewCell潮模,STableViewCell,TTableViewCell痴施,并分別創(chuàng)建xib文件:

    • 分別在這幾個xib中進(jìn)行控件的拖動及約束的設(shè)置擎厢,三個圖如下所示:


  • 把相應(yīng)的控件按住control拖動到相應(yīng)的TableViewCell中設(shè)置為全局變量;

  • ViewController繼承UITableViewDelegate, UITableViewDataSource協(xié)議辣吃;

  • 向ViewController中鍵入:

var tabelview : UITableView! = nil
    override func viewDidLoad() {
        super.viewDidLoad()
        self.tabelview = UITableView(frame: self.view.frame, style: .grouped)
        self.tabelview.delegate = self
        self.tabelview.dataSource = self
        self.view.addSubview(self.tabelview)
        //注冊
        self.tabelview.register(UINib(nibName: "TableViewCell", bundle: Bundle.main), forCellReuseIdentifier: "tag")
        self.tabelview.register(UINib(nibName: "STableViewCell", bundle: Bundle.main), forCellReuseIdentifier: "tag1")
        self.tabelview.register(UINib(nibName: "TTableViewCell", bundle: Bundle.main), forCellReuseIdentifier: "tag2")
    }

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 3
    }
    
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        if indexPath.row == 0{
        let cell = tableView.dequeueReusableCell(withIdentifier: "tag", for: indexPath) as! TableViewCell
        cell.titlelabel.text = "摩爾金融"
        cell.detaillabel.text = "2016年投資展望:大勢分析+10大機會+10大金股"
        cell.imageview.image = UIImage(named: "1")
        cell.selectionStyle = .none
        return cell
        } else if indexPath.row == 1 {
            let cell = tableView.dequeueReusableCell(withIdentifier: "tag1", for: indexPath) as! STableViewCell
            cell.nameLabel.text = "做封面人物 秀出我的態(tài)度"
            cell.firstimage.image = UIImage(named: "2")
            cell.secondimage.image = UIImage(named: "3")
            cell.thirdimage.image = UIImage(named: "4")
            cell.selectionStyle = .none
            return cell
        } else {
            let cell = tableView.dequeueReusableCell(withIdentifier: "tag2", for: indexPath) as! TTableViewCell
            cell.titleL.text = "新聞資訊"
            cell.image1.image = UIImage(named: "5")
            cell.selectionStyle = .none
            return cell
        }
    }
    func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
        if indexPath.row == 0 {
            return 100
        } else if indexPath.row == 1 {
            return 150
        } else {
            return 200
        }
    }
  • 運行結(jié)果:

day17

運用Main.storyboard

  • 打開Main.storyboard动遭,將第一個ViewController設(shè)置為Navigation Controller,再拖動兩個View Controller神得,第一個View Controller上拖一個button控件厘惦,按住control鍵將button連到第二個View Controller上,選擇show哩簿,結(jié)果如圖:
  • 新建一個RedViewController繼承自UIViewController:
var name : String! = nil
    override func viewDidLoad() {
        super.viewDidLoad()
        print(name)
    }
  • 在ViewController中鍵入:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        //獲取目標(biāo)控制器
        let vc = segue.destination;
        //判斷目標(biāo)控制器是不是你想跳轉(zhuǎn)的
        if vc is RedViewController {
            let descriptionVc = vc as! RedViewController
            descriptionVc.name = "張三"
        }
    }
  • 運行結(jié)果:

單元格

  • 在Main.storyboard中進(jìn)行控件的拖動及約束的設(shè)置宵蕉,如圖:
  • 新建RootTableViewCell繼承自UITableViewCell酝静,將剛才約束好的控件進(jìn)行拖動至RootTableViewCell中;

  • 將tableView按住control拖動至ViewController羡玛;

  • 在ViewController中鍵入:

override func viewDidLoad() {
        super.viewDidLoad()
    }
    
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 10
    }
    
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "RootTableViewCell", for: indexPath) as! RootTableViewCell
        cell.titleLabel.text = "張姍"
        cell.headImage.image = UIImage(named: "nv.jpg")
        return cell
    }
  • 運行結(jié)果:

電話本

  • 在Main.storyboard中進(jìn)行如前面的設(shè)置别智,三個頁面,并進(jìn)行約束稼稿,結(jié)果如圖:
  • 新建RootTableViewCell繼承自UITableViewCell薄榛,將之前設(shè)置好的控件headImage
    ,titleLabel渺杉,detailLabel按住control拖入NextViewController中蛇数;

  • 新建NextViewController繼承自UIViewController挪钓,將之前設(shè)置好的控件nameTextField
    是越,phoneTextField按住control拖入NextViewController中并鍵入:

var name : String! = nil
    var phone : String! = nil
    
    var sendMsg:((String, String)-> Void)! = nil
    
    override func viewDidLoad() {
        super.viewDidLoad()
        self.nameTextField.text = self.name
        self.phoneTextField.text = self.phone
    }

    @IBAction func btnAction(_ sender: UIButton) {
        self.sendMsg(self.nameTextField.text!, self.phoneTextField.text!)
        let _ = self.navigationController?.popViewController(animated: true)
    }
  • 在ViewController中拖入tableView并鍵入:
 override func viewDidLoad() {
        super.viewDidLoad()

    }

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 10
    }
    
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
       // if indexPath.row == 0 {
        let cell = tableView.dequeueReusableCell(withIdentifier: "RootTableViewCell", for: indexPath) as! RootTableViewCell
        cell.headImage.image = UIImage(named: "nv.jpg")
        cell.titleLabel.text = "姓名"
        cell.detailLabel.text = "電話"
        return cell
    }
    
    func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
        return 100
    }
    
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
       let _ = self.RootTableView .indexPath(for: sender as! RootTableViewCell)
    //先控制第二個控制器
        let second = segue.destination
        if second is NextViewController {
            let sec = second as! NextViewController
            sec.name = "張三"
            sec.phone = "3333333333"
            sec.sendMsg = {
                print("name = \($0), phone = \($1)")
            }
        }
    }
    
//    func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
//        return 0.1
//    }
  • 運行結(jié)果:

練習(xí)

  • 在Main.storyboard中進(jìn)行控件的拖動及約束的設(shè)置,如圖:
  • 將設(shè)置好的控件按住control拖入ViewController碌上;

  • 在viewcontroller中添加兩個方法:

//點擊屏幕時走
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
       self.textfield.resignFirstResponder()   
}
    
//結(jié)束編輯
func textFieldDidEndEditing(_ textField: UITextField) {
       self.label1.text = self.textfield.text
}
  • 運行結(jié)果:

day18

好友列表

  • 在ViewController中新建一個枚舉:
//控制分組的開關(guān)枚舉
enum Switch {
    case open
    case close
}
  • 在ViewController中新建一個手勢類:
//繼承單擊手勢
class Tap : UITapGestureRecognizer {
    var section : Int? = nil
    
}
  • ViewController繼承自UITableViewDelegate, UITableViewDataSource協(xié)議:

  • 在ViewController中鍵入:

    var tableView : UITableView! = nil
    //前面是分組的頭部,后面是分組中的人員
    var dic : [String:[String]] = [String:[String]]()
    //keys的數(shù)組
    var arr : [String] = [String]()
    
    var SwitchArr : [Switch] = [.close,.close,.close]
    override func viewDidLoad() {
        super.viewDidLoad()
        self.view.backgroundColor = #colorLiteral(red: 1, green: 1, blue: 1, alpha: 1)
        dic["我的好友???"] = ["張三","李四","王五","趙六","小白"]
        dic["朋友???"] = ["老李","小六","帥帥","張姍"]
        dic["同學(xué)???"] = ["瓊哥","一姐","小哥","師俊南","靖媛","貓咪"]
        
        //初始化一個數(shù)組
        for item in dic.keys {
            arr.append(item)
        }
        self.tableView = UITableView(frame: self.view.frame, style: .grouped)
        self.tableView.delegate = self
        self.tableView.dataSource = self
        self.view.addSubview(self.tableView)
    }

    //頭部視圖
    func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
        return 50
    }
    
    //自定義頭部視圖
    func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
        let view = UIView(frame: CGRect(x: 0, y: 0, width: self.view.frame.size.width, height: 50))
        //單擊手勢
        let tap = Tap()
        tap.section = section
        view.addGestureRecognizer(tap)
        tap.addTarget(self, action: #selector(tapAction(sender:)))
        let label = UILabel(frame: CGRect(x: 300, y: 20, width: 120, height: 40))
        if self.SwitchArr[section] == .close {
        label.text = "▼"
        } else {
            label.text = "▲"
        }
        view.addSubview(label)

        let label1 = UILabel(frame: CGRect(x: 20, y: 20, width: 120, height: 40))
        label1.text = self.arr[section]
        view.addSubview(label1)

        return view
        
    }
    
    //打開手勢方法
    func tapAction(sender: Tap) {
        //先取出來section
        let temp = sender.section  //當(dāng)前點擊第幾個
        
        //取反
        if self.SwitchArr[temp!] == .close {
            self.SwitchArr[temp!] = .open
        } else {
            self.SwitchArr[temp!] = .close

        }
        //刷新表格
        self.tableView.reloadData()
    }
    
    //尾部視圖
    func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
        return 0.1
    }
    
    //多少分組
    func numberOfSections(in tableView: UITableView) -> Int {
        return self.arr.count
    }
    
    //每組多少個
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        
        
        let Sswitch = self.SwitchArr[section]
        if Sswitch == .close {
            return 0
        }
        
        //先從數(shù)組中取出keys,再根據(jù)keys值取出對應(yīng)的數(shù)組
        let array = dic[self.arr[section]]
        return (array?.count)!
    }
    
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = UITableViewCell(style: .default, reuseIdentifier: "tag")
        let array = dic[self.arr[indexPath.section]]
        let str = array?[indexPath.row]
        cell.textLabel?.text = str
        return cell
    }
  • 運行結(jié)果:

(注:由于這周學(xué)的都是向xib中拖動控件而不是打代碼倚评,所以詳細(xì)的拖動步驟以及約束的設(shè)置都沒有向大家詳細(xì)的介紹,約束不會的地方以后會為大家再進(jìn)行總結(jié)馏予。)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末天梧,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子霞丧,更是在濱河造成了極大的恐慌呢岗,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,657評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蛹尝,死亡現(xiàn)場離奇詭異后豫,居然都是意外死亡,警方通過查閱死者的電腦和手機突那,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評論 3 394
  • 文/潘曉璐 我一進(jìn)店門挫酿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人愕难,你說我怎么就攤上這事早龟。” “怎么了猫缭?”我有些...
    開封第一講書人閱讀 164,057評論 0 354
  • 文/不壞的土叔 我叫張陵葱弟,是天一觀的道長。 經(jīng)常有香客問我猜丹,道長翘悉,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,509評論 1 293
  • 正文 為了忘掉前任居触,我火速辦了婚禮妖混,結(jié)果婚禮上老赤,老公的妹妹穿的比我還像新娘。我一直安慰自己制市,他們只是感情好抬旺,可當(dāng)我...
    茶點故事閱讀 67,562評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著祥楣,像睡著了一般开财。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上误褪,一...
    開封第一講書人閱讀 51,443評論 1 302
  • 那天责鳍,我揣著相機與錄音,去河邊找鬼兽间。 笑死历葛,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的嘀略。 我是一名探鬼主播恤溶,決...
    沈念sama閱讀 40,251評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼帜羊!你這毒婦竟也來了咒程?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,129評論 0 276
  • 序言:老撾萬榮一對情侶失蹤讼育,失蹤者是張志新(化名)和其女友劉穎帐姻,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體奶段,經(jīng)...
    沈念sama閱讀 45,561評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡饥瓷,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,779評論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了忧饭。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片扛伍。...
    茶點故事閱讀 39,902評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡笤喳,死狀恐怖礼患,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情篙梢,我是刑警寧澤吼砂,帶...
    沈念sama閱讀 35,621評論 5 345
  • 正文 年R本政府宣布逆航,位于F島的核電站,受9級特大地震影響渔肩,放射性物質(zhì)發(fā)生泄漏因俐。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,220評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望抹剩。 院中可真熱鬧撑帖,春花似錦、人聲如沸澳眷。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽钳踊。三九已至衷敌,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間拓瞪,已是汗流浹背缴罗。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留祭埂,地道東北人面氓。 一個月前我還...
    沈念sama閱讀 48,025評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像沟堡,于是被迫代替她去往敵國和親侧但。 傳聞我的和親對象是個殘疾皇子矢空,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,843評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫航罗、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,103評論 4 62
  • 姓名:易平香 企業(yè)名稱:東莞耀升機電有限公司 組別:AT感謝組/272期努力一組 【日精進(jìn)打卡第84天】 【知~學(xué)...
    shine1yi閱讀 131評論 0 0
  • 若干年前屁药,初到這座江南小城粥血,看什么都很新鮮。有一天出門逛街酿箭,看見附近鄉(xiāng)下的老奶奶推著輛三輪車賣糯糯的糕复亏,我...
    煙火青青閱讀 287評論 0 0
  • I 每年的教師節(jié),在我們學(xué)校的門房里總有一束玫瑰與百合相雜的鮮花在等待著我缭嫡,屈指算來缔御,已有十多個年頭了。 記得第一...
    云舒丫丫閱讀 560評論 2 4
  • 我相信一見鐘情的怦然心動妇蛀,但更看好相濡以沫的不離不棄耕突。不曾努力去追尋過一個女生,或因各種羈絆评架,或因自己不夠勇敢果斷...
    來自宇宙的小小孩閱讀 199評論 0 0