2016-10-13 14 views
1

私のコードでは、targetMethod printMethodに2つの引数を渡す必要がありました。私はbutton.tagを1つの引数として渡し、他の引数を渡す方法はありますか?iOSのUIButtonsターゲットメソッドに2つの引数を渡すにはどうすればよいですか?

例を挙げてください。

マイコード:

button.tag = indexPath.row; 
secondArgument = indexPath.section; 
[button addTarget:self action:@selector(printMethod:) forControlEvents:UIControlEventTouchUpInside]; 

-(IBAction)printMethod:(UIButton*)sender{ 
    NSLog(@"%d%d",sender.tag,//SecondArgument); 
} 
+1

あなたがすることはできませんに渡す第二引数のためのaccessibilityIdentifierを試してみてください。あなたができることは、UIButtonをサブクラス化し、そのプロパティ(indexPath、otherDataToShare)を与えることです。 – Larme

+0

IBActionメソッドは1つの引数のみを受け入れます。送信者 – Paulw11

+0

あなたの第二引数は何ですか? –

答えて

1

を設定することができ、アクション何かのように、

-(void)captureClick : (CustomFileCapturebutton*)sender{ 

    // you can use your properties here like 



    NSLog (@"%@",sender.fileType); 

} 

を作成しますindexPathボタンをオンにしたい場合は、次のようにしてください。

-(IBAction)printMethod:(UIButton*)sender{ 

    CGPoint point = [sender.superview convertPoint:sender.center toView:self.tableView]; 
    NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:point]; 
    if (indexPath) { 
      NSLog(@"Section - %ld Row - %ld",deleteIndexPath.section, deleteIndexPath.row); 
    } 
} 
+0

しかし、Arpit B Parekhのコメントはあなたの答えよりも優れています。そこでは引数としてオブジェクトを渡すことさえできます。 –

+1

@AMIamitekh私はこのアプローチを試したことがないので、それについてはわかりません。 –

1

だけUIButtonをサブクラス化し、パラメータとして渡したい、そのクラス内のプロパティを追加します。

このボタンのインスタンスで評価できます。例えば、

#import <UIKit/UIKit.h> 

@interface CustomFileCapturebutton : UIButton 

@property int maxNumberOfFilesAllow; 
@property NSString *fileType; 

@end 

は、CustomFileCapturebuttonのインスタンスを作成し、あなたが、ボタン上のあなたがaddtarget当時の性質のようなことを

CustomFileCapturebutton *btn = [[CustomFileCapturebutton alloc]init]; 

    btn.frame = yourFrame; 

    [btn addTarget:self action:@selector(captureClick:) forControlEvents:UIControlEventTouchUpInside]; 

    btn.fileType = @"png"; // set properties here 
1

ボタン

button.accessibilityIdentifier = [NSString stringWithFormat:@"%d",indexPath.section)]; 
関連する問題