Add button to UITableViewCell's Accessory View

前端 未结 10 1871
没有蜡笔的小新
没有蜡笔的小新 2021-01-01 16:41

Goal: when a user selects a cell, a button is added to that cell. Within my didSelectRowAtIndexPath function I have the following:

UIButton *downloadButton =         


        
相关标签:
10条回答
  • 2021-01-01 17:28

    Try this block of code instead of the block you provided above:

    UIButton *downloadButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    [downloadButton setTitle:@"Download" forState:UIControlStateNormal];
    [downloadButton setFrame:CGRectMake(0, 0, 100, 35)];
    [tableView cellForRowAtIndexPath:indexPath].accessoryView = downloadButton;
    

    This should display the button, but you will still need to hook up some kind of selector to it using addTarget. (I am not sure if listening in for the accessoryButtonTappedForRowWithIndexPath delegate will work in this case, try that first and see if it fires on your button press.)

    0 讨论(0)
  • 2021-01-01 17:28

    Assign the button as the accessory view rather than a subview of the accessory view.

    UITableViewCell* cell = [tableView cellForRowAtIndexPath:indexPath];
    cell.accessoryView = downloadButton;
    
    0 讨论(0)
  • 2021-01-01 17:30

    Swift 4 and above: Add button to UITableViewCell's Accessory View

        func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
        {
            let cell = Table.dequeueReusableCell(withIdentifier: "identifier", for: indexPath)
    
                let accessoryButton = UIButton(type: .custom)
                accessoryButton.addTarget(self, action: #selector(deleteCell(sender:)), for: .touchUpInside)
                accessoryButton.setImage("Add_image", for: .normal) 
                accessoryButton.frame = CGRect(x: 0, y: 0, width: 40, height: 40)
                accessoryButton.contentMode = .scaleAspectFit
    
                cell.accessoryView = accessoryButton as UIView
    
                return cell
        }
    

    Add Selector Method

        func deleteCell(sender: AnyObject)
        {
            let pointInTable: CGPoint = sender.convert(sender.bounds.origin, to: self.Table)
            let cellIndexPath = self.Table.indexPathForRow(at: pointInTable)
            let point = cellIndexPath!.row
    
        }
    
    0 讨论(0)
  • 2021-01-01 17:33
    let button = UIButton(type:.roundedRect)
    button.setTitle("A", for: .normal)
    button.sizeToFit()
    cell.accessoryView = button
    
    0 讨论(0)
提交回复
热议问题