2016-03-20 1 views
0

Я добавил 2 UIButton в своем заказе UITableViewCell.Перезагрузка всего ViewController после пользовательской кнопки, нажатой в TableView

При нажатии что-то делается с отображаемым объектом (в данном случае пользователем). Теперь я хочу, чтобы строка/ячейка исчезла. Моя идея состояла в том, чтобы перезагрузить экран, вызвав функции viewDidLoad() и viewDidAppear(), , так как я использую PFQueries для получения пользовательских данных и отображения их в моем представлении таблицы.

Что происходит, что кроме удаления этой строки, так как мой запрос не должен находить данные, он просто добавляет те же самые вещи снова.

Есть ли лучший способ решить эту проблему? Я хочу удалить строку и повторить запрос.

+0

Если вы хотите перезагрузить содержимое табличного вида, tableView.reloadData() обновит представление таблицы, снова вызвав методы источника данных. Если вы хотите удалить строку, проверьте tableView.deleteRowsAtIndexPath() –

+0

Требуется ли для этого вызов сервера для удаления выбранного элемента с сервера или вы хотите, чтобы он просто выполнялся с локальным объектом в приложении? –

+0

В чем именно проблема? Из вопроса, казалось бы, «как отправить сообщение для просмотра контроллера из ячейки при нажатии кнопки»; второй абзац выглядит как «как удалить ячейку из представления таблицы»; третий абзац, похоже, указывает на то, что что-то не работает, но утверждение не имеет для меня никакого смысла; Последнее спрашивает о лучшем решении, но я понятия не имею, что (лучше, чем что?), А затем снова возникает проблема «как удалить строку» и «как повторить запрос»? –

ответ

1

Чтобы удалить строку из таблицы, вы можете использовать функцию следующим образом:

// Add this function to your ViewController 
func tableDeleteRow(indexPath: NSIndexPath) { 

    // IMPLEMENT ME: 
    // first, remove the item from the data that drives the tableView. 

    // This is what I do. Yours will be different. 
    // self.tableData.removeAtIndex(indexPath.row) 

    // tell the table to delete the row 
    dispatch_async(dispatch_get_main_queue()) { 
     // Code 

     print("remove from table") 
     self.tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Fade) 
    } 

} 

Если вы хотите, чтобы перезагрузить всю таблицу и повторить данные, которые вы получили с сервера, выполните следующие действия:

// This is pseudo code. 
func tableRefresh() { 

    // this is a pseudo code function. 
    // replace it with your own. 
    get_data_from_server() { 
     (data, response, error) in 
     // do something with data 
     dispatch_async(dispatch_get_main_queue()) { 
      print("refresh table") 
      self.tableView.reloadData() 
     } 

    } 
} 
+0

Это хороший способ удалить строку, но она будет смешивать мой indexPath.row, не так ли? Я использую некоторый массив и получаю нужные данные с помощью массива [indexPath.row] – JVS

+0

Что вы подразумеваете под «mix up my indexPath»? Он ничего не будет смешивать. Единственное, что вам нужно сделать сейчас, это убедиться, что вы удаляете элемент из данных. – ryantxr

+0

Жаль, что это было слишком неявным. все мои массивы должны быть реорганизованы при удалении строки. что мне нужно, чтобы они были удалены и снова заполнены новыми (правильными) данными. Это то, к чему я стремился. – JVS

Смежные вопросы