Ios 如何以程序化的方式激发一个uibarbuttonite的行动?

Ios 如何以程序化的方式激发一个uibarbuttonite的行动?,ios,action,uibarbuttonitem,Ios,Action,Uibarbuttonitem,可能重复: 我已经动态创建了一个uibarbuttonim,它工作正常。我想为单元测试以编程方式启动uibarbutton项操作(单击) 即使当我在应用程序代码(而不是测试代码)中记录bar按钮项的操作时,代码工作正常,它也会给出null。下面给出了我使用的代码 NSLog(@"%@",NSStringFromSelector(barButton.action)); 在测试代码中,我创建了一个名为logout的条形按钮,并将barbutton分配给该按钮 [logout.target pe

可能重复:

我已经动态创建了一个
uibarbuttonim
,它工作正常。我想为单元测试以编程方式启动
uibarbutton
项操作(单击)

即使当我在应用程序代码(而不是测试代码)中记录bar按钮项的操作时,代码工作正常,它也会给出null。下面给出了我使用的代码

NSLog(@"%@",NSStringFromSelector(barButton.action)); 
在测试代码中,我创建了一个名为logout的条形按钮,并将barbutton分配给该按钮

[logout.target performSelector:logout.action];
但它不起作用。我记录了注销按钮的操作,它也给出了null

NSLog(@"%@",logout.action);

我想知道如何通过编程方式单击动态创建的
uibarbuttonitem

此代码与我一起工作

//in viewDidLoad
item = [[UIBarButtonItem alloc] initWithTitle:@"test" style:UIBarButtonItemStyleDone target:self action:@selector(logout)];    
toolBar.items = [NSArray arrayWithObject:item];

//In viewWillAppear
[item.target performSelector:item.action];

- (void) logout
{
    NSLog(@"Called");
}

我不知道你所说的点击是什么意思,但是上面的方法很有效,我参考了那篇文章。从中我得到了代码[logout.target performSelector:logout.action];。但是它不能工作,请看uibarbuttonim声明。我这样做是为了单元测试。我正在为别人的代码编写单元测试。所以我不能改变它。当我记录按钮的动作时,它给出null。所以performselector不起作用。当我运行应用程序(我正在测试的应用程序)时,它工作正常。请仔细考虑一下。它给了你什么空值,你试过我上面发布的代码了吗?是的,我试过了。按钮的操作为空。那么按钮的选择器设置不正确?不幸的是,我无法在代码(我正在测试的代码)中找到它的设置位置。那么,可能它没有设置,甚至在您进行单元测试之后,它的设置也没有设置。这是让uibarbuttoneim执行其功能的唯一方法。(将选择器设置为其操作)?选择器是否为空,按钮是否仍能执行其功能?