iOS-UITableView добавить одну статическую ячейку в динамическую таблицу

У меня есть UITableViewкот который контролируется NSFetchedResultsController. Я хочу добавить одну ячейку в первую строку и сделать эту ячейку статичной. Другими словами, будет кнопка, которая откроет другой контроллер вида.

До сих пор я был в порядке с контроллером и таблицей результатов. Теперь я немного запутался. Как это сделать?

Вместо этого можно использовать заголовок, но я не хочу, чтобы этот заголовок был сверху все время. Я хочу, чтобы эта ячейка была такой же, как WhatsAppiOS «Create new group» cell on chats panel.

Спасибо!

2 ответа

  1. Вам нужно будет создать tableview с количеством строк, извлеченных из NSFetchedResultsController +1. Также в cellForRowIndexметоде вам нужно будет добавить галочку like indexPath.row == 0и там вы внесете изменения.

    Также вам придется добавить действие для этой кнопки в этом разделе. Вы также можете установить различные пользовательские tableviewдля первой строки.
    Он может быть похож на следующий:

    func tableView(_ tableView: UITableView, cellForRowAtIndexPath indexPath: IndexPath) -> UITableViewCell {
    
      if(indexPath.row==0){
         let cell = tableView.dequeueReusableCell(withIdentifier: "CellWithButton", for: indexPath) as! CellWithButton
      }
      else{
          let cell = tableView.dequeueReusableCell(withIdentifier: "OtherCells", for: indexPath) as! OtherCells
          //here add data for cells from your array
       }  
     return cell
    }
    
  2. var dataArray = ["A","B","C"]
    
    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return self.dataArray.count+1
    }
    
    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
    {
        if indexPath.row == 0
        {
            let cell = tableView.dequeueReusableCell(withIdentifier: "CreateNewGroupCell") as! CreateNewGroupCell
            return cell
        }
        else
        {
           // Get the data from Array
              let data = self.dataArray[indexPath.row-1]
    
           // Logic to show other cells
              let cell = tableView.dequeueReusableCell(withIdentifier: "OtherCell") as! OtherCell
              return cell
    
           // ....
        }
    
    }