0

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

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

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

Спасибо!

+0

Самый простой способ сделать это Goto UITableView -> Перетащите UIView на него выше обычного ячейки в качестве заголовка View, добавить кнопку на нем и действие в ViewController , он всегда будет на высоте, не нужно писать какой-либо код, чтобы справиться с этим. – iphonic

+0

Вместо создания ячейки вы должны добавить кнопку в заголовок таблицы. – User511

+0

Добавление представления является лучшим! Спасибо @iphonic. Я не знаю, почему я этого не думал. Еще раз спасибо! – anyName

ответ

0

Вам нужно будет создать табличное представление с количеством строк, полученных из NSFetchedResultsController +1. Также в методе cellForRowIndex вам нужно добавить чек, например 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 
} 
0
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 

     // .... 
    } 

}