1

tag++ を使用して複数のボタンを作成しました。送信者メソッドでどのボタンをクリックするかを知る必要があります。タグ付きのボタンをクリックすると、データベースから値を取得する必要があります。クリックボタンのタグ位置にifメソッドを使おうかな

button1 = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    [button1 addTarget:self action:@selector(click1:)                                    forControlEvents:UIControlEventTouchDown];
     [button1 setTitle:@"click" forState:UIControlStateNormal];

     button1.frame = CGRectMake(xff, yff, 30.0, 20.0);

    int gTag = 1;                                    

      button1.tag = gTag;
       gTag++;

    [wbCont.scrollView  addSubview:button1];

ここで私はボタンのクリックを知る必要があります:

 -(void)click1:(id)sender{


UIButton *button3=(UIButton *)sender;
switch([button3 tag]){
        //Do the switch case here

        NSArray *coorpaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);
        NSString *coordocumentsDirectory = [coorpaths objectAtIndex:0];
        NSLog(@"docs dir is %@", coordocumentsDirectory);

        NSString *coorpath = [coordocumentsDirectory stringByAppendingPathComponent:@"ohs.sqlite"];
        NSLog(@"filepath %@",coorpath);

        if (sqlite3_open([coorpath UTF8String], &database) == SQLITE_OK) {


            const char *sql =  [[NSString stringWithFormat:
                                 @"SELECT xcoor,ycoor,artt_id FROM touch where artt_id = %@", artID]cStringUsingEncoding:NSUTF8StringEncoding];


            NSLog(@"getmainsql is %s",sql);

            sqlite3_stmt *statement;

            if (sqlite3_prepare_v2(database, sql, -1, &statement, NULL) == SQLITE_OK) {
                // We "step" through the results - once for each row.
                while (sqlite3_step(statement) == SQLITE_ROW) {



                    xff1=sqlite3_column_double(statement, 0);

                    yff1=sqlite3_column_double(statement, 1);

                    art_Id2 = sqlite3_column_int(statement, 2);

                    NSLog(@"xff1 is %f",xff1);

                    NSLog(@"yff1 is %f",yff1);

                    //  NSLog(@"zc is %@",zc);

                    NSLog(@"art_Id is %ld",(long)art_Id2);


                }

            }

        }


}
4

2 に答える 2

3

送信者は、アクションを実行したオブジェクトを返します。最初に送信者をボタンにタイプキャストします。オブジェクトから達成可能なすべてのプロパティを持つことができます

-(void)click1:(id)sender{
    UIButton *button=(UIButton *)sender;
    switch([button tag]){
    //Do the switch case here
    }
}

だからあなたの場合

 -(void)click1:(id)sender{

        UIButton *button=(UIButton *)sender;
NSInteger tag = [button tag];
if( tag){
 NSArray *coorpaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);
    NSString *coordocumentsDirectory = [coorpaths objectAtIndex:0];
    NSLog(@"docs dir is %@", coordocumentsDirectory);
    NSString *coorpath = [coordocumentsDirectory stringByAppendingPathComponent:@"ohs.sqlite"];
    NSLog(@"filepath %@",coorpath);
    if (sqlite3_open([coorpath UTF8String], &database) == SQLITE_OK) {
        const char *sql =  [[NSString stringWithFormat:
                             @"SELECT xcoor,ycoor,artt_id FROM touch where artt_id = %@", artID]cStringUsingEncoding:NSUTF8StringEncoding];
        NSLog(@"getmainsql is %s",sql);
        sqlite3_stmt *statement;
        if (sqlite3_prepare_v2(database, sql, -1, &statement, NULL) == SQLITE_OK) {
            // We "step" through the results - once for each row.
            while (sqlite3_step(statement) == SQLITE_ROW) {
                xff1=sqlite3_column_double(statement, 0);
                yff1=sqlite3_column_double(statement, 1);
                art_Id2 = sqlite3_column_int(statement, 2);
                NSLog(@"xff1 is %f",xff1);
                NSLog(@"yff1 is %f",yff1);
                //  NSLog(@"zc is %@",zc);
                NSLog(@"art_Id is %ld",(long)art_Id2);
    }
   }
 }
}

アップデート

はい、使用できます

ノート

UIControlEventTouchUpInsideボタンのクリックイベントを達成するために 使用

[button addTarget:self action:@selector(click1:) forControlEvents:UIControlEventTouchUpInside];
于 2013-11-05T08:53:18.540 に答える
2

これをするだけで簡単です

-(void)click1:(id)sender{
    int tag = [sender tag];
    switch(tag){
    //Do the switch case here
    }
}
于 2013-11-05T08:49:22.703 に答える