以下は、日付ピッカーを作成する標準的な例です
- (void)viewDidLoad {
CGRect pickerFrame = CGRectMake(0,250,100,100);
UIDatePicker *myPicker = [[UIDatePicker alloc] initWithFrame:pickerFrame];
[myPicker addTarget:self action:@selector(pickerChanged:) forControlEvents:UIControlEventValueChanged];
[self.view addSubview:myPicker];
[myPicker release];
}
- (void)pickerChanged:(id)sender
{
NSLog(@"value: %@",[sender date]);
}
これはすべて順調です。私はIBで要素を作成することに少し慣れているので、プログラムでオブジェクトを作成するとき、データにアクセスする方法がわかりません。
つまり、myPicker をクラス プロパティに割り当てて、_myPicker としてアクセスする必要がありますか?
または、別のメソッドを呼び出さずに pickerChanged メソッド内の日付にアクセスしたいとしましょう。NSDate プロパティを割り当て、ピッカーが変更されるたびに再割り当てする必要がありますか?
そのようにしようとしたときに、いくつかのメモリの問題に遭遇しました。_theDate を取得する別のメソッドがありましたが、pickerChanged が変更しているのと同時にアクセスしようとしたのでしょうか?
とにかく、私が得ているのは、「アクションシートやピッカーなどをプログラムで作成するときの適切なワークフローは何ですか」です。これらが変更された場合、クラスの残りの部分がアクセスできるように、結果のデータをどのように保存する必要がありますか?
おまけの質問:
これに違いはありますか?
for(UILabel *myLabel in view.subviews){
NSLog(myLabel.text);
}
この?ビューに特定の種類のオブジェクトしか含まれていないことがわかっている場合、常にクラスをチェックする必要がありますか?
for((id) myLabel in view.subviews){
if([myLabel isKindOfClass:[UILabel class]){
UILabel *theLabel = myLabel;
NSLog(myLabel.text);
}
}