【问题标题】:How to fire the action of a uibarbuttonitem programatically? [duplicate]如何以编程方式触发 uibarbuttonitem 的操作? [复制]
【发布时间】:2012-06-28 09:14:50
【问题描述】:

可能重复:
How to fire uibarbuttonitem click event programmatically

我已经动态创建了一个uibarbuttonitem,它可以正常工作。我想以编程方式触发 uibarbutton 项目操作(单击)以进行单元测试。

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

NSLog(@"%@",NSStringFromSelector(barButton.action)); 

在测试代码中,我创建了一个名为 logout 的条形按钮并将 barbutton 分配给它。要以编程方式单击条形按钮项,我遵循以下代码。

[logout.target performSelector:logout.action];

但是没有用。我记录了注销按钮的操作,它也给出了 null。

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

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

【问题讨论】:

  • rishi,我参考了那个帖子。从那里我得到了代码 [logout.target performSelector:logout.action];。但它没有用
  • 请显示 UIBarbuttonItem 声明。

标签: ios action uibarbuttonitem


【解决方案1】:

这段代码对我有用

//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");
}

我不知道你所说的点击是什么意思,但是上面的方法有效

【讨论】:

  • 我这样做是为了进行单元测试。我正在为别人的代码编写单元测试。所以我不能改变它。当我记录按钮的操作时,它给出了 null。所以 performselector 不起作用。当我运行应用程序(我正在测试的那个)它工作正常。请善意地考虑一下。
  • 它给你什么 null,你试过我上面贴的代码吗?
  • 是的,我做到了。按钮的动作为空。所以没有为按钮正确设置选择器?不幸的是,我无法在代码(我正在测试的那个)中找到它的设置位置。
  • 那么它可能没有设置,甚至在你进行单元测试之后设置它
  • 这是使 uibarbuttonitem 完成其工作的唯一方法。 (将选择器设置为其操作)?选择器可以为 null 并且按钮仍然可以执行它的功能吗?
猜你喜欢
  • 1970-01-01
  • 2012-03-18
  • 2011-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多