У меня есть UITableView
, и каждая ячейка связана с файлом. В представлении таблицы отображаются файлы от всех пользователей, и когда файл для ячейки принадлежит текущему пользователю, ячейка отображает кнопку редактирования. Мой cellForRowAtIndexPath
проверит идентификатор пользователя, связанный с файлом, и сравните его с текущим идентификатором пользователя. Если совпадение идентификатора, кнопка не скрыта.кнопка в пользовательской таблице таблицы не отображается
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
{
let cell = self.fileTable.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! FileCell
let file = self.tableFiles[indexPath.row]
cell.fileLabel.text = file.title
cell.userLabel.text = file.username
if file.userId != user?.userID
{
cell.editButton.hidden = true
}
cell.editButton.addTarget(self, action:#selector(HomeController.editPressed(_:)), forControlEvents: UIControlEvents.TouchUpInside)
return cell
}
Это прекрасно работает при входе пользователя в систему, и табличное представление загружается в первый раз после входа в систему. Но когда пользователь создает новый файл, который будет добавлен в tableview, вызывается self.navigationController?.popViewControllerAnimated(true)
и снова открывается табличное представление. Тем не менее, кнопка редактирования нового файла не отображается в новом файле или каких-либо будущих добавленных файлах, если пользователь не выйдет из системы и не войдет в систему.
Похоже, вам нужно еще раз вызвать API, чтобы перечислить файлы, поскольку я не вижу нигде в вашем коде, где вы, возможно, сохранили fileID вашего вновь созданного файла. –
Когда я возвращаюсь к контроллеру представления, содержащему табличное представление, 'viewWillAppear' вызывает API для получения обновленных данных. У меня есть инструкции печати, показывающие, что идентификатор пользователя для файла и текущего пользователя действительно совпадают, и контрольная точка, установленная внутри оператора if, показывающая, что кнопка не скрыта. – Brosef
Возможно, это связано с тем, что ячейка является многоразовой. У меня была схожая проблема. Попробуйте else cell.editButton.hidden = false. Я думаю, это поможет. Если это так, я опубликую его в ответах. –