6

ネイティブの Objective-C アプリを Monotouch ソリューションに移植しています。

ストーリーボードにテーブルビューがあり、いくつかの静的なテーブル セルがあります。

次の目的の c コードを使用して、テーブルからの選択を受け取りました

- (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;
}

今、私はMonoTouchで同じことをしたいのですが、ネット上で見つけたすべての例がDataSourceとUITableViewDelegateをどのように使用しているかを見つけることができません。

しかし、そのアプローチを使用すると、私の「静的」セルが削除され、置き換えられます。

これは私がしようとしているものです

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.");
    }
}

誰か何か提案はありますか?

4

1 に答える 1

7

WeakDelegateこの作品を作るために使ってみるべきだと思います。

コントローラで、次のようにメソッドを配線します。

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

次に設定しますTableView.WeakDelegate = this;

それをいじってみてください、私は私のパラメータが正確に正しくないかもしれません、など。

于 2012-04-23T12:04:21.810 に答える