class ViewControllerI: UIViewController,UITableViewDelegate,UITableViewDataSource { var mytableView : UITableView? let testValue:NSString = "這是測試內容\n這是測試內容\n這是測試內容\n這是測試內容\n這是測試內容\n這是測試內容\n這是測試內容\n這是測試內容\n這是測試內容\n這是測試內容\n這是測試內容\n這是測試內容\n這是測試內容\n這是測試內容" override func viewDidLoad() { super.viewDidLoad() view.backgroundColor = UIColor.gray mytableView = UITableView(frame: CGRect(x: 0, y: 64, width: view.frame.width, height: view.frame.height) , style: .plain) mytableView?.tableFooterView = UIView() mytableView?.delegate = self // 設定代理 mytableView?.dataSource = self mytableView?.estimatedRowHeight = 60 mytableView?.rowHeight = UITableViewAutomaticDimension view .addSubview(mytableView!) //註冊UITableView,cellID為重複使用cell的Identifier mytableView?.register(UITableViewCell.self, forCellReuseIdentifier: "cellID") } /* @注意:我們前邊的ViewController繼承了UITableViewDataSource @和 UITableViewCelegate。如果我們不註冊下面的三個方法XCode就會報錯。。。 */ // 列數 func numberOfSections(in tableView: UITableView) -> Int { return 1 } // 行數 func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return 10 }// 建立 UITableViewCell func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cells = (tableView.dequeueReusableCell(withIdentifier: "cellID", for: indexPath)) as UITableViewCell cells.textLabel?.text = testValue as String return cells } // 點擊響應事件 func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { tableView.deselectRow(at: indexPath, animated: true) } // 分割線無間距 override func viewDidLayoutSubviews() { mytableView?.separatorInset = .zero mytableView?.layoutMargins = .zero } func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) { cell.separatorInset = .zero cell.layoutMargins = .zero }