gpt4 book ai didi

iphone - UIButton 在点击时崩溃

转载 作者:行者123 更新时间:2023-12-01 19:07:09 24 4
gpt4 key购买 nike

好的,所以这很奇怪;在升级到 Xcode 的最终 GMseed 之前,我的按钮工作得非常好......
现在我什至不能在一个 super 简单的规模上做它们而不会使程序在点击时崩溃。

绝对最奇怪的方面是它有时会起作用,但就像 85% 一样,它只是崩溃;当它起作用时,它会在大量使用后崩溃。

这是我的代码(精简为我能想到的最简单的按钮实现):

@interface TESTViewController ()
{
UIButton *button;
}

@end

@implementation TESTViewController

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self)
{
}
return self;
}

- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
[self addButton];
[button addTarget:self action:@selector(buttonPressed)
forControlEvents:UIControlEventTouchDown];
}

- (void)addButton
{
button = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 80, 45)];

[button setTitle:@"CLICK" forState:UIControlStateNormal];

[button setBackgroundColor:[UIColor blackColor]];

[self.view addSubview:button];
}

- (void)buttonPressed
{
NSLog(@"WORKED");
}

- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}

@end


- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];


TESTViewController *test = [[TESTViewController alloc] init];

[self.window addSubview:test.view];

return YES;
}

我尝试在 init 函数 viewDidLoad 中创建按钮 - 两者都无法始终如一地工作,尽管 viewDidLoad 似乎更频繁地工作......

我试过 -(void) addButton:(UIButton*)button以及
使用:
[button addTarget:self action:@selector(buttonPressed:) 
forControlEvents:UIControlEventTouchDown];

- 没有不同。

我完全不知所措。我尝试在论坛上查找它,但不幸的是,其中大部分是指使用 IBActions 进行编程。

我得到的错误是访问不正确
所以我的猜测是,当按钮被点击时,它实际上并没有访问 buttonPressed 函数,而是完全不同的东西......我不知道为什么会这样......

谢谢你的帮助!

最佳答案

问题出在您的“didFinishLaunchingWithOptions”方法中。在这里,您正在创建一个被释放的本地对象,即“TESTViewController *test = [[TESTViewController alloc] init]”。
您应该保留此对象,因此请尝试将其设为属性并使用“self.test = [[TESTViewController alloc] init]”。它会起作用的。
按照惯例,您应该使用 rootViewController 而不是将您的 viewController 添加到 windows 的 subview 中。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.
self.test = [[TESTViewController alloc] initWithNibName:nil bundle:nil];
self.window.rootViewController = self.test;
[self.window makeKeyAndVisible];
return YES;
}

关于iphone - UIButton 在点击时崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18973188/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com