在右栏按钮项的选择器中传递参数

uts*_*iem 0 objective-c selector ios

我有这个代码:

UIBarButtonItem *donebutton = [[UIBarButtonItem alloc] initWithTitle:@"Done" style:UIBarButtonItemStyleDone target:self action:@selector(doneButtonPressed:)];
    self.navigationItem.rightBarButtonItem = donebutton;
Run Code Online (Sandbox Code Playgroud)

现在我想传递一些参数给方法:

- (void)doneButtonPressed{}
Run Code Online (Sandbox Code Playgroud)

怎么做 ?

Par*_*iya 5

如果你想传递对象说字符串,那么使用setAssociatedObject:

首先补充一下

#import <objc/runtime.h>
Run Code Online (Sandbox Code Playgroud)

现在

NSString *strText = @"text";

 objc_setAssociatedObject(donebutton, "Argument", strText, OBJC_ASSOCIATION_RETAIN_NONATOMIC); // provide button , key , object for passing
Run Code Online (Sandbox Code Playgroud)

并在你需要你的论点的地方检索:

NSString *str = objc_getAssociatedObject(donebutton, "Argument"); //using button and key
//remove object associated for button if not needed.
Run Code Online (Sandbox Code Playgroud)

但是如果你想要按钮参考那么

- (void)doneButtonPressed:(id)sender{
  UIButton *btnClicked = (UIButton *)sender;
  .......
}
Run Code Online (Sandbox Code Playgroud)