【问题标题】:connect button to view controller class objective-C programmatically [duplicate]连接按钮以编程方式查看控制器类objective-C [重复]
【发布时间】:2012-07-20 12:22:33
【问题描述】:

可能重复:
connect button to TableViewController in xcode

如何以编程方式将我的按钮连接到另一个视图控制器类提前谢谢,我需要代码我真的是初学者谢谢,这是我的按钮代码:我的 vie 控制器类名称是 year.m

-(void) year:(id)sender{
    NSLog(@"Year button clicked");
 }

编辑:

这是我的编程按钮的代码

UIBarButtonItem *yearButton= [[UIBarButtonItem alloc] initWithTitle:@"Year" style:UIBarButtonItemStyleBordered    
 target:self action:@selector(year:)];

【问题讨论】:

  • 好的,那我的答案是错误的,艾米的答案是正确的。只需按照 OP 的回答
  • @Owl 我应该把 AMy 的答案放在哪里?
  • @casperOne 如果相同,为什么答案不起作用?

标签: objective-c ios xcode


【解决方案1】:

要以编程方式(而不是通过 Interface Builder)添加目标/动作对,请在 UIButton 上查看此方法:

addTarget:(id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents

【讨论】:

  • 我编辑了我的问题,你能检查一下吗
  • 这是一个相当广泛的问题。查看有关Navigation Controllers 的 Apple 指南。那里有一个部分用于以编程方式创建它们。本质上,您必须确保第一个视图控制器(包含您的按钮)已经在导航控制器中,然后在您的操作方法中创建新的 VC 并将其推送到导航控制器的堆栈中。
  • 嗯,不——对于 UIConrols 来说确实如此,但 UIBarButtonItem 不是 UIControl 子类。
  • 啊,当问题发布时,它最初并没有提到 UIBarButtonItem。似乎更多的是关于如何推送新的视图控制器(因此我链接到该指南),而不是如何设置目标/动作(我最初认为它是关于)。
【解决方案2】:

您可以简单地添加addTarget 方法(参见此处:Bind Action to UI Button)。 在您的情况下,它将是:

[yearButton addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside];

//the method that gets called
-(IBAction) buttonPressed: (id) sender {
  NSLog(@"Button clicked %@", sender);
  // do something here
}

但是如果你想检查按钮是否在另一个视图控制器中被按下,你必须寻找 NSNotifications(见这里:Cocoa Notification Example)。有了这些,您可以将消息从一个班级发送到另一个班级并对用户的输入做出反应。

【讨论】:

  • inside (IBAction) buttonPressed: (id) sender { NSLog(@"Button clicked %@", sender); //在这里做点什么}我应该写我想按下我的按钮然后去test.m视图就是这样
  • 你能帮帮我吗
  • 所以你想从一个视图转换到另一个我猜://push it to the navigationController [[self navigationController] pushViewController:detailedViewController animated:YES]; 在这种情况下,detailedViewController 是你想要切换到的新视图控制器的名称。应该是year
【解决方案3】:

按以下方式在viewDidLoad 方法中创建yourButton...

UIButton *yourButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[yourButton setTitle:@"YearButton" forState:UIControlStateNormal];
yourButton.frame = CGRectMake(240, 40, 75, 30);     
[yourButton addTarget:self action:@selector(year:) forControlEvents:UIControlEventTouchUpInside]; 
[self.view addSubview:yourButton];

这是你的方法代码....

-(void) year:(id)sender{
    NSLog(@"Year button clicked");
 }

我认为这对你会有帮助。

【讨论】:

  • 感谢您的回复,但我创建了我的按钮 我有我的按钮 我不知道如何将我的按钮连接到一个视图控制器类,我的意思是在 NSLog(@"Year button clicked");我应该写什么,当我按下按钮时它会转到另一个班级
  • 查看此link 以获得答案
  • 但它是项目栏按钮,它不是那样工作的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多