Swift UI

  // 实例化影讯导航控制器

        letmoviewVC =MovieViewController()

        // 给控制器添加导航标题

        moviewVC.navigationItem.title="影讯"

        // 实例化导航

        letmoviewNav =UINavigationController.init(rootViewController:moviewVC)

        moviewNav.tabBarItem=UITabBarItem(tabBarSystemItem:UITabBarSystemItem.more, tag:100)


// 标签栏控制器

            lettabCtl =UITabBarController()

            tabCtl.viewControllers= [moviewNav,loginNav,newsNav]

            self.window?.rootViewController= tabCtl


===================表格====================

class MovieViewController: UIViewController,UITableViewDelegate,UITableViewDataSource {

    // 表格属性

    vartable:UITableView=UITableView(frame:CGRect(x:0, y:0, width:scrWidth, height:scrHeight), style:UITableViewStyle.grouped)

overridefuncviewDidLoad() {

        super.viewDidLoad()

// 设置表格的数据源或代理

        self.table.dataSource=self

        self.table.delegate=self

        self.view.addSubview(self.table)




        // Do any additional setup after loading the view.

    }

    overridefuncdidReceiveMemoryWarning() {

        super.didReceiveMemoryWarning()

        // Dispose of any resources that can be recreated.

    }


    // MARK: - >>>>>>>UITbaleViewDatasource<<<<<<<<<<

//=========================    ============================

    funcnumberOfSections(in tableView:UITableView) ->Int{

        returntableData.count

    }


    // 根据分区下标返回每个分区中有多少行

    functableView(_tableView:UITableView, numberOfRowsInSection section:Int) ->Int{

        // 得到表格字典的key的数组

        letkeyArr =self.tableData.keys

        // 通过分区下标得到该分区对应的key

        letkey = keyArr[keyArr.index(keyArr.startIndex,offsetBy:section)]

        // 通过key得到对应的value,这个value是个数组

        letsectionArr =self.tableData[key]

        return(sectionArr?.count)!

    }

    functableView(_tableView:UITableView, cellForRowAt indexPath:IndexPath) ->UITableViewCell{

        letidentifier ="cell"

        varcell = tableView.dequeueReusableCell(withIdentifier: identifier)

        ifcell ==nil{

            cell =UITableViewCell(style: .subtitle, reuseIdentifier: identifier)


        }

        // 得到所有的key的数组

        letkeyArr =self.tableData.keys


        letkey = keyArr[keyArr.index(keyArr.startIndex,offsetBy:indexPath.section)]

        // 根据key得到分区的数组

        letsectionArr =self.tableData[key]

        // 根据行的下标得到改行对应的字典

        letrowDic = sectionArr![indexPath.row]


        cell?.textLabel?.text= rowDic["name"]

        cell?.detailTextLabel?.text= rowDic["author"]



        returncell!


    }

    // 设置分区标题

    functableView(_tableView:UITableView, titleForHeaderInSection section:Int) ->String? {

        // 获取所有key的数组

        letkeyArr =self.tableData.keys

        // 根据分区下标获取对应的key

        letkey = keyArr[keyArr.index(keyArr.startIndex,offsetBy: section

        )]

        returnkey

    }





======================登录========================


protocolloginViewDelegate:class {

   // 执行登录所做的回调

    funcloginHandle(account:String) ->Void


}

class LoginView: UIView ,UITextFieldDelegate{

   privatevarbackImageView:UIImageView?

   privatevaraccountTF:UITextField?

   privatevarloginBtn:UIButton?



    // 定义代理属性

  weak var delegate:loginViewDelegate?




    overrideinit(frame:CGRect) {

        super.init(frame: frame)

        // 背景视图

    self.backImageView=UIImageView(frame:CGRect(x:0, y:0, width:scrWidth, height:scrHeight))

    self.backgroundColor = UIColor.yellow

        self.accountTF=UITextField(frame:CGRect(x:20, y:150, width:scrWidth-40, height:60))

        self.accountTF?.placeholder="请输入账号"

        self.accountTF?.delegate=self

        self.accountTF?.textAlignment= .center

        self.accountTF?.borderStyle= .line

        self.addSubview(self.accountTF!)

        self.loginBtn=UIButton(frame:CGRect(x:45, y:230, width:scrWidth-90, height:60))

        self.loginBtn?.setTitle("登录", for: .normal)

        self.loginBtn?.backgroundColor = UIColor.red

        self.loginBtn?.addTarget(self, action:#selector(loginBtnDidPress(sender:)), for: .touchUpInside)

        self.addSubview(self.loginBtn!)


    }


 @objcfuncloginBtnDidPress(sender:UIButton) ->Void{

    ifletacc =self.accountTF?.text{

        if!acc.isEmpty{

            self.delegate?.loginHandle(account: acc)

        }else{

            print("数据不可为空")

        }

    }

    else

    {

        print("数据不可为空")

    }

    }


    requiredinit?(coder aDecoder:NSCoder) {

        fatalError("init(coder:) has not been implemented")

    }


    functextFieldShouldReturn(_textField:UITextField) ->Bool{

        textField.resignFirstResponder()

        return true

    }


    overridefunctouchesBegan(_touches:Set, with event:UIEvent?) {

        self.endEditing(true)

    }

}

你可能感兴趣的:(Swift UI)