2016-06-21 2 views
0

У меня есть 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) и снова открывается табличное представление. Тем не менее, кнопка редактирования нового файла не отображается в новом файле или каких-либо будущих добавленных файлах, если пользователь не выйдет из системы и не войдет в систему.

+0

Похоже, вам нужно еще раз вызвать API, чтобы перечислить файлы, поскольку я не вижу нигде в вашем коде, где вы, возможно, сохранили fileID вашего вновь созданного файла. –

+0

Когда я возвращаюсь к контроллеру представления, содержащему табличное представление, 'viewWillAppear' вызывает API для получения обновленных данных. У меня есть инструкции печати, показывающие, что идентификатор пользователя для файла и текущего пользователя действительно совпадают, и контрольная точка, установленная внутри оператора if, показывающая, что кнопка не скрыта. – Brosef

+0

Возможно, это связано с тем, что ячейка является многоразовой. У меня была схожая проблема. Попробуйте else cell.editButton.hidden = false. Я думаю, это поможет. Если это так, я опубликую его в ответах. –

ответ

0

Ниже следует решить вашу проблему.

if file.userId != user?.userID 
{ 
    cell.editButton.hidden = true 
} 
else 
{ 
    cell.editButton.hidden = false 

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