Whether or not I am approaching this in the correct way I am not sure but I did get the answer from someone regarding the exact issue I was having with the overridden methods not getting called, so I will post their answer in case anyone has the same issue. Credit to JonathanBird from the Xamarin Forums.
You are attempting to override these methods in the wrong class. DialogViewController uses a UITableViewSource object to build out the UITableView. My understanding is that when a UiTableViewSource is used to configure a UITableViewController then methods in the UITableViewController are not called. Since DialogViewController is a subclass of UITableViewController this applies to it as well.
DialogViewController uses a UITableViewSource object of subtype DialogViewController.Source. If you want to override the methods in question then you need to subclass DialogViewController.Source and override the methods there.
Finally, you will need to substitute the the DialogViewController.Source that the DialogViewController creates with the one you have created. You have an opportunity to do this by overriding CreateSizingSource () in your CustomDialogViewController.
DialogViewController uses the following implementation of CreateSizingSouce().
public virtual DialogViewController.Source CreateSizingSource (bool unevenRows)
{
return (!unevenRows) ? new DialogViewController.Source (this) : new DialogViewController.SizingSource (this);
}
If your implementation does not make use of unevenRows then you only need to worry about returning one type of Source.
For example the override in your CustomDialogViewController might be:
public override Source CreateSizingSource (bool unevenRows)
{
return new CustomSource(this);
}
Where CustomSource is your subclass of DialogViewController.Source which overrides the methods you desire.
Below is one of many possible forms your implementation might take which shows an override of the RowSelected method.
public class CustomDialogViewController : DialogViewController
{
public CustomDialogViewController (RootElement root) : base (root) {}
public override Source CreateSizingSource (bool unevenRows)
{
return new CustomSource(this);
}
private class CustomSource : DialogViewController.Source
{
public CustomSource (CustomDialogViewController controller) : base (controller)
{}
public override void RowSelected (UITableView tableView, NSIndexPath indexPath)
{
// You handle row selected here
base.RowSelected (tableView, indexPath);
}
}
}