確定。我一直在嘗試很多東西來解決這個問題,但ChrisNTR爲我的特殊問題提供了正確的解決方案。我將在這裏展示他的示例代碼片段:
public override UITableViewCell GetCell (UITableView tableView, NSIndexPath indexPath)
{
var cell = tableView.DequeueReusableCell("reuseThis");
if(cell == null)
{
cell = new UITableViewCell(UITableViewCellStyle.Default, "reuseThis");
}
cell.TextLabel.Text = Convert.ToChar(dash.oneToHundred[indexPath.Row]).ToString();
var button = UIButton.FromType(UIButtonType.RoundedRect);
button.Frame = new System.Drawing.RectangleF(40f, 0f, 280f, 40f);
button.SetTitle(dash.oneToHundred[indexPath.Row].ToString(),UIControlState.Normal);
button.AddTarget (this, new Selector ("MySelector"), UIControlEvent.TouchDown);
button.Tag = indexPath.Row;
cell.ContentView.AddSubview(button);
return cell;
}
[Export ("MySelector")]
void ButtonEventHere (UIButton button)
{
Console.WriteLine ("Hello! - Button clicked = " + button.Tag);
Console.WriteLine (Convert.ToChar(dash.oneToHundred[button.Tag]).ToString());
}
總之,您可以調用button.AddTarget()並將相應的值傳遞給按鈕。其中一個值是您定義爲'buttonEventHere'的選擇器(可以是您想要的任何名稱,我確信[export(「MySelector」)]具有正確的名稱)。確保你將indexPath.Row傳遞給button.Tag。您將使用該索引來知道哪個按鈕被按下,並相應地執行您的操作。
希望這有助於如果你像我一樣陷入困境。
你是對的......但它很醜! – skolima