2015-10-06 7 views
1

У меня есть динамический tableView, как показано ниже, который показывает имена массива в соответствии с indexpath.row. И в каждой ячейке у меня есть кнопка, которая изменяет имя, которое является удалением ячейки, как в коде ниже. Когда я загрузить таблицу предположим, строки загрузки, как показано ниже:Stop Dynamic Table Reloading IndexPath - Swift

name1

name2

NAME3

Name4

Name5

Name6

Name7

Name8

И затем я нажимаю кнопку и, например, меняю Name4 на NewName. Он изменяется при нажатии кнопки, но при прокрутке в таблице, когда дело доходит до indexpath.row имени Name4 снова (где в этом случае indexpath.row==3), NewName возвращается к Name4. Как я могу остановить загрузку таблицы каждый раз, когда изменяется indexpath.row? Или как я могу найти другое решение этой проблемы?

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    let cell:NamesCell = tableView.dequeueReusableCellWithIdentifier("Cell") as! NamesCell 

    cell.NameCell1003 = self 
    cell.nameLbl.text = self.resultsNameArray[indexPath.row] 

    return cell 
} 

func NameCell1003(cell: NamesCell) 
{ 
    cell.nameLbl.text= "NewName" 
} 
+1

Текст ячейки основан на данных в вашем 'resultsNameArray'. Вам нужно обновить этот массив при нажатии кнопки. – rmaddy

ответ

1

rmaddy правильно, что вы хотите изменить исходные данные в массиве и перезагрузите TableView для достижения поведения, которое вы хотите.

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    let cell:NamesCell = tableView.dequeueReusableCellWithIdentifier("Cell") as! NamesCell 

    cell.nameLbl.text = self.resultsNameArray[indexPath.row] 

    return cell 
} 

func NameCell1003(cell: NamesCell) 
{ 
    self.resultsNameArray[indexYouWantToChange] = "NewName" 
    self.tableView.reloadData() 
} 

Вам нужна ссылка на UITableView, как правило, это IBOutlet, чтобы позвонить reloadData на него. В коде я просто назвал его «tableView». Если resultsNameArray очень большой, думаю, больше, чем несколько сотен пунктов, вы можете исследовать с помощью:

func reloadRowsAtIndexPaths(_ indexPaths: [NSIndexPath], 
      withRowAnimation animation: UITableViewRowAnimation) 

Это позволит вам обновлять только те строки, которые нужно. Для небольшого количества строк, как то, что вы указываете в своем вопросе, reloadData отлично и проще реализовать.

+0

Спасибо Mr Beardsley – saner

+0

Рад, что я мог помочь. Удачи с вашим проектом! –