简体   繁体   中英

How do I put a button inside a tableview cell?

I'm new to this, so I have troubles doing that. My goal is too put, like the title said, a button inside a cell. If you want to see my code, so that this could help you to answer this question, here is the code:

using System;
using System.Collections.Generic;
using System.Text;
using Foundation;
using UIKit;

namespace TableView
{
public class TableSource : UITableViewSource
{
    string[] tableItems;
    string cellIdentifier = "TableCell"; 



    public TableSource (string[] items)
    {
        tableItems = items; 
    }

    public override nint RowsInSection(UITableView tableview, nint section)
    {
        return tableItems.Length; 
    }
    public override void RowSelected(UITableView tableView, NSIndexPath indexPath)
    {
        new UIAlertView("Alert", "You selected: " + tableItems[indexPath.Row], null, "Next Site", null).Show();
        tableView.DeselectRow(indexPath, true); 
    }
    public override UITableViewCell GetCell(UITableView tableView, NSIndexPath indexPath)
    {
        UITableViewCell cell = tableView.DequeueReusableCell(cellIdentifier);
        if (cell == null)
            cell = new UITableViewCell(UITableViewCellStyle.Subtitle, cellIdentifier);
        cell.TextLabel.Text = tableItems[indexPath.Row];

        if(indexPath.Row > -1)
            cell.DetailTextLabel.Text = tableItems[indexPath.Row - 0];



            return cell; 
    }
}
}

Here is the code for ViewController, if this is needed to.

First of all you need to add a tag to the button so that you can see what button is being pressed inside the cellForRowAtIndexPath function like this:

cell.Button.tag = indexPath.row

Then inside an IBAction you can see exactly what row's button was pressed like this:

@IBAction func buttonPressed(sender: AnyObject)
{
    let button = sender as! UIButton
    let index = NSIndexPath(forRow: button.tag, inSection: 0)
}

Create a custom TableViewCell and add the button there. Than use that custom TableViewCell in your GetCell method.

class MyButtonTableViewCell : UITableViewCell
{
    public UIButton MyButton { get; private set; }

    public MyButtonTableViewCell() : base(UITableViewCellStyle.Default, "MyButtonCell")
    {
        MyButton = new UIButton(UIButtonType.System);
        MyButton.Frame = ContentView.Bounds;
        MyButton.SetTitle("My Title", UIControlState.Normal);

        ContentView.AddSubview(MyButton);
    }
}


public override UITableViewCell GetCell(UITableView tableView, NSIndexPath indexPath)
{
    UITableViewCell cell = tableView.DequeueReusableCell("MyButtonCell");

    if (cell == null)
        cell = MyButtonTableViewCell();

        return cell; 
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM