在看似永无止境的努力来了解更多关于iPhone开发,我一直在与一些可通过苹果开发者网站的源代码玩耍。我正在使用的特定示例是Core Data Books,找到了here。 DetailViewController和AddViewController是以编程方式编写的,因为它们没有任何xib文件。我的问题是关于在不使用IB的情况下以编程方式向视图添加内容的问题。我想在UITableView下面放置一个UISwitch,它具有DetailView中特定书籍的详细信息。我该怎么做呢?这是我到目前为止已经试过:创建UISwitch编程
在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];
而且它抛出两个警告称的“通断”隐藏局部声明实例变量。但即使有这些收入,UISwitch也会弹出来,但是当我移动它或使用它时,它看起来不像它正在工作。对于我的行动看起来像这样:
- (IBAction)flip:(id)sender {
if (onoff.on) NSLog(@"On");
else NSLog(@"Off");
}
当开关打开时,控制台应该阅读,而当它关闭时,控制台应该读出。对?任何时候我移动它,它只是在控制台中重复,关闭。如果它开启,或者关闭,它只会炫耀。我在做什么错了?请帮忙!由于
为什么不使用IB?如果你不使用它,那么为什么这些事情被宣布为IBOutlet和IBAction? – gerry3 2010-01-08 06:41:36
哇。伟大的一点。我真的很想使用IB,但正如我所提到的,我试图让这个工作在一个不使用IB的视图上。有没有简单的方法将xib文件添加到只填充可用视图并显示信息单元格的屏幕?谢谢 – Steve 2010-01-08 06:50:28