-1

iPhone アプリのマップ ビュー ページの注釈マーカーにボタンを追加しました。

UIButton* rightButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
[rightButton addTarget:self
                action:@selector(go_to_detail_page:)    
      forControlEvents:UIControlEventTouchUpInside];
annView.rightCalloutAccessoryView = rightButton; 

そして私の受信機能は

-(IBAction)go_to_detail_page:(id)sender;{
}

私の質問は次のとおりです。私は自分のページに非常に多くのマーカーを作成しています。その特定の注釈ビュー ボタンが押されたときに一意の識別子を渡したいと思います。文字列でも問題ありません。go_to_detail_page注釈が押されたら、メソッドに文字列を渡すにはどうすればよいですか?

4

4 に答える 4

1

使用rightButton.tag = 1 して

-(IBAction)go_to_detail_page:(id)sender{
    UIButton *button = (UIButton *)sender;
    if(button.tag==1){//this is the rightButton
         //your logic goes here

    }
}
于 2012-12-31T11:30:10.347 に答える
0

私の控えめな意見では、2 つの選択肢があります。

最初のオプションは、各ボタンに a を割り当てtag、そのアクションでそれを取得することです。たとえば、ボタンごとに異なるタグを割り当てます。

rightButton.tag = // a tag of integer type

そして、あなたはこのように使います

- (void)goToDetailedPage:(id)sender
{
    UIButton *senderButton = (UIButton *)sender;

    int row = senderButton.tag;        
    // do what you want with the tag
}

もう 1 つのオプションは、連想参照を使用することです。それらを介して、 をサブクラス化せずにUIButton、(タイプの) プロパティを作成し、NSStringそれを識別子として使用することができます。

それらを使用するには、サブクラス UIButton を参照してプロパティを追加してください。

これは非常に複雑な概念ですが、それによって多くの柔軟性が得られます。

ノート

IBAction を使用する必要はありません。代わりに void を入れてください。IBAction または IBOutlet は、IB (Interface Builder) で動作することを目的としています。それらは単なるプレースホルダーです。ボンネットの下では、それらは無効を意味します。

キャメルケース表記を使用。たとえば、回答で書いたように、 の代わりにgo_to_detail_pageを使用しますgoToDetailedPage

于 2012-12-31T11:53:49.003 に答える
0

UIButton をサブクラス化し、NSString* メンバーを配置して、各ボタン インスタンスにタグを付けることができます。

于 2012-12-31T11:31:19.580 に答える
0

一意の識別子をボタンとして設定できますtag

UIButton* rightButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
[rightButton addTarget:self
                action:@selector(go_to_detail_page:)    
      forControlEvents:UIControlEventTouchUpInside];
annView.rightCalloutAccessoryView = rightButton; 
rightButton.tag == any unique number // it would act as unique identifier

次のように取得します

- (IBAction)go_to_detail_page:(id)sender;{

    UIButton *button = (UIButton *)sender;
    if(button.tag==unique identifier){
        // this is the rightButton
        // your logic
    }
    else
    {

    }
}
于 2012-12-31T11:39:20.143 に答える