MonoTouch How to implement RowSelected for a UITableViewController with Static Cells

cells, static, uitableview, xamarin.ios

Solution

I think you should try using `WeakDelegate` to make this work.

In your controller wire up the method like so:

[Export("tableView:didSelectRowAtIndexPath:")]
public void RowSelected (UITableView tableView, NSIndexPath indexPath)
{
     //Your code here
}

Then set `TableView.WeakDelegate = this;`

Play around with it, I may not have my parameters exactly right, etc.

Problem

I'm porting a native objective-C app to a Monotouch solution. I have a in my storyboard a tableview, with some static table cells. Using following objective-c code a received a selection from the table ``` - (void) tableView:(UITableView *) aTableView didSelectRowAtIndexPath:(NSIndexPath *) indexPath { // remove the row highlight [aTableView deselectRowAtIndexPath:indexPath animated:YES]; switch(indexPath.row) { case 0: [self callWebsite]; break; case 1: [self sendEmail]; break; case 2: [self makePhoneCall]; break; } return; } ``` Now I want to do the same in MonoTouch, but can't find out how and all the examples I find on the net, are using the DataSource and UITableViewDelegate. But when using that approach, My "Static" cells are removed, replaced. This is what I'm trying ``` public partial class ContactViewController : UITableViewController { public ContactViewController (IntPtr handle) : base (handle) { this.TableView.Delegate = new CustomTableViewDelegate(); } } public class CustomTableViewDelegate : UITableViewDelegate { public override void RowSelected (UITableView tableView, NSIndexPath indexPath) { // Remove the row highlight RowDeselected(tableView, indexPath); /* // Is this section our "button" section? switch(indexPath.row) { case 0: [self callWebsite]; break; case 1: [self sendEmail]; break; case 2: [self makePhoneCall]; break; } */ Console.WriteLine("Do something meaningfull."); } } ``` Somebody any suggestion?

Original source