【问题标题】:UIButtons not workingUIButtons 不工作
【发布时间】:2011-05-06 01:58:24
【问题描述】:

我有一些 Objective-C 代码可以在两个视图之间进行转换。我有过渡代码。我想做的是在按下按钮时转换到视图,但是这似乎只在我使用代码生成按钮时才有效,它不适用于我在 IB 中创建并链接到代码的按钮(使用 File's所有者等)。

这是我的一些代码:

- (void)goToTwo {
    ALPHAAppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
    [appDelegate displayView:2];
}

- (void)viewDidLoad {
    NSLog(@"load01");

    //Button Code
    UIButton *btnOne = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
    btnOne.frame = CGRectMake(40, 40, 240, 30);
    [btnOne setTitle:@"One!" forState:UIControlStateNormal];
    [btnOne addTarget:self action:@selector(goToTwo)          forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:btnOne];

    [super viewDidLoad];
}

当视图加载时,我正在创建一个按钮,以便我有两个,一个是用代码创建的,一个是在 IB 中创建的,此时两者都会做同样的事情(转换到下一个视图),

我的 .h 文件:

#import <UIKit/UIKit.h>


@interface View1 : UIViewController {

}

-(IBAction) goToTwo:(id)sender;

@end

我很确定我正确地将按钮链接到函数,将 TouchUpInside 旁边的节点拖到文件所有者,然后单击方法名称。

关于为什么代码生成的按钮有效而 IB 按钮无效的任何想法?

非常感谢。

【问题讨论】:

    标签: objective-c cocoa-touch ios uiviewcontroller uibutton


    【解决方案1】:

    IBAction 被命名为goToTwo:(以冒号结尾),但在.m 文件中实现并由代码中创建的按钮调用的方法是goToTwo(末尾没有冒号)。

    要么更改 IBAction(并在 IB 中重新连接),要么更改 .m 文件中的方法实现以匹配 .h 文件中的声明。

    【讨论】:

    • 干杯,我想我只是在你发帖之前到达那里,但你肯定澄清了。
    • @Jack 如果这是问题的根源,那么您可能在编译时忽略了有关未实现方法的警告。请务必注意警告。
    猜你喜欢
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-06
    • 2015-03-23
    • 2015-08-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多