홈>
두 개의
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 : 건강 키트 -내 건강 데이터와 함께 공유 건강 데이터 가져오기
- ios : 미디어 컨트롤과 같은 명령 센터 구축
- ios : Swift에서 클래스 객체를 프로토콜로 다시 캐스팅
- iOS 카메라 앱에 의해 백그라운드에서 앱이 종료되는 것을 방지
- ios : Swift에서 프로그래밍 방식으로 UIScrollView
- 암호 필드를 입력하기 시작할 때 iOS 강력한 암호 문제
- AwaitKit은 xcode 13.1, iOS 14.0을 지원하지 않습니다.
- ios : Apple M1 Pro에서 Google 캐스트 SDK가 작동하지 않음
- ios : Custom SOTabBar( 라이브러리 )를 사용하여 RTL이 제대로 작동하지 않습니다.
- ios : 요일 기호를 사용하여 요일 정수 배열을 문자열로 가져옵니다.
beginUpdates
사용 그리고endUpdates
버튼을 클릭하면 새 셀을 삽입합니다.테이블 뷰 배열의 모든 추가 데이터
그런 다음 테이블을 업데이트하고 새 행을 삽입하십시오
이것은 셀을 삽입하고 전체 테이블을 다시로드 할 필요는 없지만이 문제가 발생하면
<시간>tableview.reloadData()
를 사용할 수도 있습니다Swift 3.0
<시간>목표 -C