gpt4 book ai didi

iphone - 以编程方式创建 UISwitch

转载 作者:太空狗 更新时间:2023-10-30 03:09:50 24 4
gpt4 key购买 nike

为了学习更多关于 iPhone 开发的知识,我似乎永无止境地努力,我一直在玩弄苹果开发者网站上提供的一些源代码。我正在使用的特定示例是 Core Data Books,发现 here . DetailViewController 和 AddViewController 是通过编程方式创建的,因为它们没有任何 xib 文件。我的问题是关于在不使用 IB 的情况下以编程方式将内容添加到 View 中。我想在 UITableView 下方放置一个 UISwitch,它在 DetailView 中包含有关特定书籍的详细信息。我该怎么做呢?到目前为止,这是我尝试过的:

在 AddViewController 中,我设置了 UISwitch:

@interface AddViewController : DetailViewController {
id <AddViewControllerDelegate> delegate;
UISwitch *onoff;

}

@property (nonatomic, assign) id <AddViewControllerDelegate> delegate;
@property (nonatomic, retain) IBOutlet UISwitch *onoff;

我还设置了一个 IBAction:

- (IBAction)flip:(id)sender;

然后我在 AddViewController.m 文件中综合它,但没有任何反应。我只需要设置开关并进行设置,这样我就可以从我设置的 IBAction 中控制它的功能。我知道这非常简单,但我想不通。所以,任何帮助将不胜感激!谢谢

编辑 1

所以我按照我在 viewDidLoad 中的指示实现了代码,如下所示:

   - (void)viewDidLoad {

[super viewDidLoad];
UISwitch *onoff = [[UISwitch alloc] initWithFrame: CGRectZero];
[onoff addTarget: self action: @selector(flip:) forControlEvents:UIControlEventValueChanged];
// Set the desired frame location of onoff here
[self.view addSubview: onoff];

它会抛出两个警告,指出“onoff”的局部声明隐藏了实例变量。但即使有这些收入,UISwitch 弹出时也很好,但当我移动或使用它时,它看起来并不像完全正常工作。对于我这样的操作:

- (IBAction)flip:(id)sender {
if (onoff.on) NSLog(@"On");
else NSLog(@"Off");
}

只要开关打开,控制台就应该读取,当开关关闭时,控制台就应该读取。正确的?每当我移动它时,它只会在控制台中重复关闭。如果它打开,或者如果它关闭,它只是炫耀。我到底做错了什么?请帮忙!谢谢

最佳答案

编译器正试图帮助您。您正在覆盖 viewDidLoad; 中的 onoff 实例变量,因此,它永远不会被设置。在您的 -flip: 方法中,您引用了一个 nil Controller 。有两种方法可以解决此问题:

(a) 去掉 onoff 的局部声明,只使用你的实例变量

(b) 将 sender 参数转换为 -flip: 作为 UISwitch,并访问它:

- (IBAction) flip: (id) sender {
UISwitch *onoff = (UISwitch *) sender;
NSLog(@"%@", onoff.on ? @"On" : @"Off");
}

关于iphone - 以编程方式创建 UISwitch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2025842/

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