【问题标题】:How to recognize a button press for programmatic UIButton Xcode如何识别编程 UIButton Xcode 的按钮按下
【发布时间】:2013-12-29 22:50:07
【问题描述】:

我使用此代码在导航栏上以编程方式创建 UIBarButtons,如何设置按钮以编程方式发送 IBAction。 I.O.W.如何以编程方式放置视图以识别 UITapGestureRecognizer(设置 touchUpInside 事件)并将其连接到 IBAction?

self.navigationController.navigationBar.tintColor = [UIColor colorWithRed:153/256.0 green:204/256.0 blue:51/256.0 alpha:1.0];

self.navigationController.navigationBar.tintColor = [UIColor whiteColor];

self.navigationController.navigationBar.titleTextAttributes = [NSDictionary dictionaryWithObject:[UIColor whiteColor] forKey:NSForegroundColorAttributeName];

self.navigationItem.title = @"Feed";

UIBarButtonItem *cameraItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCamera target:self action:nil];
UIBarButtonItem *postItem = [[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:@"myIcon.png"] style:UIBarButtonItemStyleBordered target:self action:nil];

UIBarButtonItem *addPlusItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:nil];
UIBarButtonItem *optionsItem = [[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:@"myIcon2.png"] style:UIBarButtonItemStyleBordered target:self action:nil];

NSArray *cameraAndPostItem = @[cameraItem, postItem];
NSArray *addPlusAndOptionsItem = @[optionsItem, addPlusItem];

self.navigationItem.leftBarButtonItems = cameraAndPostItem;
self.navigationItem.rightBarButtonItems = addPlusAndOptionsItem;

编辑:当用户按下我以编程方式实现的 UIBarButtonItem 时,我正在尝试执行 segue。

【问题讨论】:

  • 你需要重新澄清。我不知道你想做什么。你想让一个按钮“按下”另一个按钮吗?
  • 我接受了@Daij Djan 的建议并将操作设置为选择器方法调用,但现在我想在此方法中执行一个segue,我该怎么做?

标签: objective-c ios7 xcode5


【解决方案1】:

设置按钮的目标和动作

UIBarButtonItem *cameraItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCamera target:self action:nil];
cameraItem.target = self;
cameraItem.action = @selector(cameraItemButtonInvoked);

//or short
UIBarButtonItem *cameraItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCamera target:self action:@selector(cameraItemButtonInvoked)];

...

- (IBAction)cameraItemButtonInvoked {
    .... // e.g.
    [self performSegueWithIdentifier:@"ShowDetail" sender:sender];
}

【讨论】:

  • 如何连接 IBAction?我也很难理解如何使用 IBACtion 方法调用我想调用的 segue。
  • 它连接到条形按钮。您将其目标设置为实例 + 将其操作设置为 Selector 并且它已连接
【解决方案2】:

您将像这样将操作设置为 UIBarButton:

UIBarButtonItem *addPlusItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(addSomething:)];

注意动作部分,在那里你传递了要调用的选择器。像这样在 ViewController 中编写该选择器:

- (void) addSomething:(id)sender{
    NSLog(@"I'm adding something..");
}

对其余按钮执行相同操作。

【讨论】:

  • 我怎样才能在这个方法中执行一个segue?
  • 我的@interface 没有声明选择器?我收到一条错误消息,我可能忘记声明选择器?但我声明了方法..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-01-07
  • 1970-01-01
  • 2011-10-01
  • 2012-01-21
  • 1970-01-01
  • 2010-12-20
  • 1970-01-01
相关资源
最近更新 更多