• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Swift在HomeKit中管理用户住宅(HMHome)(二)

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

 

 

  • 第一步:打开HomeKit的功能

 

 

  • 第二步:plist文件设置权限,String类型,随便写点什么
Privacy - HomeKit Usage Description
  •  第三步:获取房间列表,这里用的是个tableView接收的,应该大家都能看的懂,tableView的第一次reload必须在HomeKit初始化完成的时候,也就是代理方式homeManagerDidUpdateHomes之中
class ViewController: UIViewController,UITableViewDataSource,UITableViewDelegate ,HMHomeManagerDelegate{
    
    @IBOutlet weak var tableView: UITableView?
    lazy var manager: HMHomeManager = {
        let manager = HMHomeManager()
        manager.delegate = self
        return manager
    }()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        self.tableView?.register(UITableViewCell.self, forCellReuseIdentifier: "cell")
    }
    
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return manager.homes.count
    }
    
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as UITableViewCell
        let home = manager.homes[indexPath.row] as HMHome
        cell.textLabel?.text = home.name
        return cell;
    }
    func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool {
        return true
    }
    func tableView(_ tableView: UITableView, editActionsForRowAt indexPath: IndexPath) -> [UITableViewRowAction]? {
        var arr = [UITableViewRowAction]()
        
        let action:UITableViewRowAction = UITableViewRowAction.init( style: .default, title: "删除") {[weak self]  (UITableViewRowAction, IndexPath) in
            self? .deleRoomFromIndex(IndexPath)
        }
        arr.append(action)
        
        return arr
        
    }
    func deleRoomFromIndex(_ indexPath:IndexPath){
        manager.removeHome(manager.homes[indexPath.row]) {[weak self] (Error) in
            if Error == nil{
                self?.tableView?.deleteRows(at: [indexPath], with: .fade)
            }
        }
    }
    
    
    @IBAction func addBtnClick(_ sender: Any) {
        let vc = AddHomeVC.init(nibName: "AddHomeVC", bundle: nil)
        self.navigationController?.pushViewController(vc, animated: true)
    }
//    HMHomeManagerDelegate  Homekit完成初始化会调用这个,所有在初始化完成之后刷新UI
    public func homeManagerDidUpdateHomes(_ manager: HMHomeManager){
        self.tableView?.reloadData()
    }
    //添加
    public func homeManager(_ manager: HMHomeManager, didAdd home: HMHome){
        self.tableView?.reloadData()
    }
    //删除
     public func homeManager(_ manager: HMHomeManager, didRemove home: HMHome){
        self.tableView?.reloadData()
    }
    

}
  •  添加房间
class AddHomeVC: UIViewController {
    let manager = HMHomeManager()
    @IBOutlet weak var homeNameTF: UITextField!
    override func viewDidLoad() {
        super.viewDidLoad()
    }
    @IBAction func addHomeBtnClick(_ sender: Any) {
        if (homeNameTF.text?.isEmpty)!{
            print("请输入房间名字")
            return
        }
        manager.addHome(withName: homeNameTF.text!) { (home, error) in
            if error == nil{
                self.navigationController? .popViewController(animated: true)
            }
        }
    }
    deinit {
        print("这里销毁了")
    }
}

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap