홈>
두 개의
UITableView
가있는 프로젝트를 진행 중입니다
s와 두 개의
UITextField
s, 사용자가 버튼을 누르면 첫 번째
textField
의 데이터
tableView
에 가야
두 번째는 두 번째
tableView
로갑니다.
. 내 문제는
tableView
에 데이터를 넣는 방법을 모른다는 것입니다.
사용자가 버튼을 누를 때마다
tableView:cellForRowAtIndexPath:
로 데이터를 삽입하는 방법을 알고 있습니다
그러나 그것은 내가 아는 한 한 번 작동합니다. 그래서
tableView
를 업데이트하는 데 사용할 수있는 방법
사용자가 버튼을 누를 때마다?
- 답변 # 1
- 답변 # 2
두 tableView에 데이터를 추가하는 코드는 다음과 같습니다.
import UIKit class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource { @IBOutlet weak var table1Text: UITextField! @IBOutlet weak var table2Text: UITextField! @IBOutlet weak var table1: UITableView! @IBOutlet weak var table2: UITableView! var table1Data = ["a"] var table2Data = ["1"] override func viewDidLoad() { super.viewDidLoad() } @IBAction func addData(sender: AnyObject) { //add your data into tables array from textField table1Data.append(table1Text.text) table2Data.append(table2Text.text) dispatch_async(dispatch_get_main_queue(), { () -> Void in //reload your tableView self.table1.reloadData() self.table2.reloadData() }) table1Text.resignFirstResponder() table2Text.resignFirstResponder() } //delegate methods func numberOfSectionsInTableView(tableView: UITableView) -> Int { return 1 } func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { if tableView == table1 { return table1Data.count }else if tableView == table2 { return table2Data.count } return Int() } func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { if tableView == table1 { let cell = table1.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! UITableViewCell let row = indexPath.row cell.textLabel?.text = table1Data[row] return cell }else if tableView == table2 { let cell = table2.dequeueReusableCellWithIdentifier("Cell1", forIndexPath: indexPath) as! UITableViewCell let row = indexPath.row cell.textLabel?.text = table2Data[row] return cell } return UITableViewCell() } }
결과는 다음과 같습니다.
- 답변 # 3
Swift 3.0업데이트 된 솔루션
하단에 삽입
self.yourArray.append(msg) self.tblView.beginUpdates() self.tblView.insertRows(at: [IndexPath.init(row: self.yourArray.count-1, section: 0)], with: .automatic) self.tblView.endUpdates()
TableView 상단에 삽입
self.yourArray.insert(msg, at: 0) self.tblView.beginUpdates() self.tblView.insertRows(at: [IndexPath.init(row: 0, section: 0)], with: .automatic) self.tblView.endUpdates()
관련 자료
- ios - Swift에서 UITableView의 왼쪽 및 오른쪽 여백을 설정하는 방법
- swift5 - Swift 5에서 UITableView editActionsForRowAt가 nil에 올바르게 반응하지 않습니다
- ios - 선택 깜박임 옵션이있는 신속한 UITableview 셀 확인 표시
- ios - 신속한 UITableview 셀 확인 표시 및 검색이 작동하지 않습니다
- 삭제 후 신속한 UITableView 영역 순서가 잘못됨
- ios - Swift UITableView 셀을 스크롤하면 이미지가 변경됨
- Swift 3으로 변환시 UITableView 오류
관련 질문
- ios : 타원형 또는 원형 모양에서 UIImage를 자르는 방법은 무엇입니까?
- ios : 3 개의 사용자 정의 뷰와 동적 높이가있는 UITableView
- ios : 스위프트 클래스 이름을 동적으로 방향 지정하려면 어떻게해야합니까?
- 스 와이프 제스처 iOS Swift
- ios : SDWebimage 오류 다운로드 이미지는 0 픽셀이 0입니다
- ios : UIView가 전체 화면을 탐색하기 탐색하지만 하위 뷰를 보여줍니다.
- ios : FetchedRequest /Core 데이터에서 Date ()를 날짜 선택기 SwiftUI로로드
- ios : 앱 그룹을 공유하지 않는 iPhone 및 Apple Watch
- ios : 정적 라이브러리와 신속한
- ios : Swift에서 Mailto를 사용하여 전자 메일 본문에 여러 쿼리 매개 변수가있는 URL을 어떻게 전달합니까?
beginUpdates
사용 그리고endUpdates
버튼을 클릭하면 새 셀을 삽입합니다.테이블 뷰 배열의 모든 추가 데이터
그런 다음 테이블을 업데이트하고 새 행을 삽입하십시오
이것은 셀을 삽입하고 전체 테이블을 다시로드 할 필요는 없지만이 문제가 발생하면
<시간>tableview.reloadData()
를 사용할 수도 있습니다Swift 3.0
<시간>목표 -C