2015-01-06 2 views
0

Итак, у меня есть кнопка настроек, и она должна быть добавлена ​​в ячейку с именем текущего пользователя. Однако, похоже, он случайно добавляется в ячейку. В заявлении, в котором я создаю кнопку, это только , созданный однажды, однако он добавляется к нескольким ячейкам. Я добавил изображения проблемы, и ps текущее имя пользователя «test», поэтому кнопка настроек не должна находиться в той же ячейке, что и матовый короткий пользователь. Спасибо и ниже - это прилагаемый код функции, в которой я создаю и добавляю кнопку subview.Кнопка в ячейке добавляется, когда она не должна быть

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    var cell : UITableViewCell? = tableView.dequeueReusableCellWithIdentifier("chatCell") as? UITableViewCell 

    if cell == nil { 
     cell = UITableViewCell(style: UITableViewCellStyle.Subtitle, reuseIdentifier: "chatCell") 
    } 

    cell!.selectionStyle = UITableViewCellSelectionStyle.None 

    let screenSize: CGRect = UIScreen.mainScreen().bounds 
    let screenWidth = screenSize.width 
    let screenHeight = screenSize.height 

    var sectionTitle = self.friendSectionTitles[indexPath.section] 
    var friendArray: [String]! = friendDict[sectionTitle] 
    var friend = friendArray[indexPath.row] 

    if sectionTitle == "me" && friend == PFUser.currentUser().username { 
     var settingsButton: UIButton = UIButton.buttonWithType(UIButtonType.System) as UIButton 
     settingsButton.frame = CGRectMake(screenWidth - 100 , 5, 50, 30) 
     settingsButton.addTarget(self, action: "settingsButtonTapped:", forControlEvents: UIControlEvents.TouchUpInside) 
     settingsButton.setTitle("Settings", forState: UIControlState.Normal) 
     cell!.addSubview(settingsButton) 
    } 

    cell!.textLabel!.text = friend 

    return cell! 
} 

image of the table view with settings button in the appropriate areaimage of the table view where the settings button was put in the inappropriate cell

+1

Вам нужно понять повторное использование ячеек. Когда ячейка с добавленной кнопкой повторно используется (в некоторой другой строке), кнопка все равно будет там. – rdelmar

ответ

0

В заявлении, в котором я создаю кнопку он только создается один раз, однако он добавляется в несколько ячеек

Поскольку клетки, после создания, повторно используются для других строк таблицы. Если вы не хотите, чтобы кнопка отображалась в повторно используемой ячейке, вам понадобится (в вашей реализации cellForRowAtIndexPath:), чтобы обнаружить ее наличие и удалить ее (или хотя бы скрыть ее) для каждой строки не иметь его.

+0

Это может помочь вам прочитать мои объяснения здесь: http://www.apeth.com/iOSBook/ch21.html#_the_three_big_questions – matt

+0

Только что реализовано, и это решило проблему. – user2464778

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