iPhone の開発についてさらに学ぶための尽きることのない努力の中で、私はリンゴの開発者の Web サイトから入手できるソース コードのいくつかを試してみました。私が取り組んでいる特定の例は、コア データ ブックです。DetailViewController と AddViewController は、xib ファイルがないため、プログラムで作成されます。私の質問は、IB を使用せずにプログラムでビューに追加することについてです。DetailView に特定の本に関する詳細情報がある UITableView の下に 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];
そして、「onoff」のローカル宣言がインスタンス変数を隠しているという 2 つの警告をスローします。しかし、それらの収益があっても、UISwitch は問題なくポップアップしますが、動かしたり使用したりすると、完全に機能しているようには見えません。次のような私のアクションの場合:
- (IBAction)flip:(id)sender {
if (onoff.on) NSLog(@"On");
else NSLog(@"Off");
}
スイッチがオンのときは常にコンソールがオンになり、スイッチがオフのときはコンソールがオフになります。右?移動するたびに、コンソールで繰り返されます。オンの場合、またはオフの場合は、オフに表示されるだけです。私は一体何を間違っているのでしょうか?助けてください!ありがとう