2016-12-12 1 views
0

제 생각에는 tableview의 모든 행이 당신이 채울 수있는 일종의 작업입니다. 그리고 언제든지 appView를 열 때마다 tableView에서 선이 있어야합니다. (그림에서 보는 바와 같이) 섹션의 행 수를 알지 못합니다. (신속한)

또한 행을 추가 할 수있는 버튼이 있습니다. 그러나 섹션의 행 수를 어떻게 알 수 있는지 잘 모릅니다. 당신은 (내 코드에서 내가 이해할 수없는 순간 댓글을 달았습니다)? 그것으로 저를 도와주세요

class TaskSecondViewController: UIViewController,UITableViewDataSource{ 

@IBOutlet weak var tableView: UITableView! 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     tableView.dataSource = self 
     self.tableView.separatorColor = UIColor.clear 

@IBAction func insert_rows(_ sender: Any) { 

    let indexPath = IndexPath(row: 1, section: 1) // Don't know what to write in "row" 
    self.tableView.insertRows(at: [indexPath], with: .top) 

    } 
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 

     return 1 // Here also 
    } 
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
     var cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! TaskTableViewCell 

     return cell 
    } 

} 
+1

어딘가에 당신이 당신의 행을 저장해야합니다 . 그리고이 데이터 소스는 저장 한 항목, 즉 섹션의 행 수를 확실히 나타낼 수 있습니다. – idmean

답변

0

하지만 내가 섹션에서 행의 수를 알 수있는 방법을 모를 수 있습니다.

이해해야 할 중요한 점은 표시되는 항목이나 표시 방법 또는 사람들이 상호 작용할 때 수행 할 작업에 대해 테이블이 알지 못한다는 것입니다. 표는 실제로 섹션 목록입니다. 각 섹션은 셀 목록입니다. 그리고 스크롤 할 수 있습니다. 그리고 도움을 요청할 수 있습니다.

표시되는 항목은 다른 곳에 보관됩니다. 그들은 동시에 테이블의 행으로 존재하지도 않습니다. 테이블은 표시해야 할만큼의 행만 유지하며 사용자가 스크롤하면 다른 객체에 더 많은 행을 표시하도록 요청하고 더 이상 표시되지 않는 행을 버립니다. 다른 객체는 데이터 소스이며 항목이 보관되는 '다른 곳'일 수도 있고, 해당 항목을 어디에서 찾을 지 (또는 생성할지)를 아는 객체 일 수도 있습니다.

이 경우 사용자의 TaskSecondViewController보기 컨트롤러가 테이블의 데이터 소스입니다. 해당 컨트롤러가 어떻게 든 필요한 데이터에 액세스 할 수 있어야합니다. 어쩌면 파일에서 목록을 읽습니다. 어쩌면 일련의 항목이 다른 객체에서 전달되었을 수도 있습니다. 주제에는 100 만 가지의 변형이 있지만 테이블에 표시 할 내용과 그 내용이 보관 된 위치를 확인하는 것은 사용자의 몫입니다. 그 사실을 알게되면 주어진 섹션에 얼마나 많은 아이템이 있는지 파악할 수 있어야합니다. 또한 얼마나 많은 섹션이 있는지 알아야합니다. 하나의 항목 목록 만 가질 수 있으며 섹션으로 나눌 계획은 없습니다. 이 경우 섹션 수와 해당 섹션의 행 수에 대한 전체 목록의 항목 수에 대해서만 1을 반환합니다.

0

행을 추가하려는 경우 명시 적으로 테이블 뷰에 삽입 할 필요가 없습니다. 배열 (또는 사전 등)을 가지고 해당 항목에 항목을 추가 한 다음 항목이 추가되면 테이블보기를 다시로드하는 것이 더 쉽습니다.

var itemsToDisplay = [SomeObject] 

override func viewDidLoad() { 

    // populate items if needed 

} 

@IBAction func insert_rows(_ sender: Any) { 

    // get your data to create your object 
    // add your object to itemsToDisplay 
    itemsToDisplay.append(myObject) 

    // for a TableViewController 
    self.tableView.reloadData() 

    // if you've included the tableView as an @IBOutlet 
    myTableView.reloadData() 

} 

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 

    return itemsToDisplay.count // this might be zero, but it doesn't matter 
} 

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
    var cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! TaskTableViewCell 

    var item = itemsToDisplay[indexPath.row] 

    cell.titleLabel.text = item.whatever 

    return cell 
} 
1

당신은 단순히

var numOfRow = 0 

당신이

numberOfRow += 1 
tableView.reloadData() 

그래서 당신이 numberOfRow를 반환 할 수있는 버튼을 누를 때마다이있을 수

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 

return numOfRow 
} 
관련 문제