私は2つのボタンで動作しないものを見つけることができません。UIButtonが毎回意図したとおりに動作しない
(「従来型」または「VR」が含まれている場合)ボタンは意図したとおりに動作します。変数に他の値がある場合、ボタンは何も行いません。メソッドは依然として呼び出され、ボタンメソッドのifステートメントに入りますが、プロパティは変更されません。そのボタンのようにUIButtonは接続されていません。変数に "従来型"または "VR"文字列が含まれていれば完璧に動作します。
グッド
plantingEventData.seedingMethod = @"conventional" or @"VR"
悪い私は2つの選択されるいずれか一つまたはどちら用に設定されているだろうボタン作成
plantingEventData.seedingMetod = any other value
:
UIButton *conventionalSeedingButton = [UIButton new];
conventionalSeedingButton.frame = CGRectMake(200, ((i * 40) + 143), 20, 20);
conventionalSeedingButton.tag = 1;
[conventionalSeedingButton addTarget:self action:@selector(conventionalSeedingMethodBtn:) forControlEvents:UIControlEventTouchUpInside];
if ([plantingEventData.seedingMethod isEqualToString:@"conventional"])
{
NSLog(@"convention button is set to true");
[conventionalSeedingButton setImage:[UIImage imageNamed:@"radio-btn-selected.png"] forState:UIControlStateNormal];
conventionalSeedingButton.selected = TRUE;
}
else
{
NSLog(@"convention button is set to false");
[conventionalSeedingButton setImage:[UIImage imageNamed:@"radio-btn.png"] forState:UIControlStateNormal];
conventionalSeedingButton.selected = FALSE;
}
UIButton *VRSeedingButton = [UIButton new];
VRSeedingButton.frame = CGRectMake(200, ((i * 40) + 143), 20, 20);
VRSeedingButton.tag = 2;
[VRSeedingButton addTarget:self action:@selector(VRSeedingMethodBtn:) forControlEvents:UIControlEventTouchUpInside];
[VRSeedingButton setImage:[UIImage imageNamed:@"radio-btn.png"] forState:UIControlStateNormal];
if ([plantingEventData.seedingMethod isEqualToString:@"VR"])
{
NSLog(@"VR button is set to true");
[VRSeedingButton setImage:[UIImage imageNamed:@"radio-btn-selected.png"] forState:UIControlStateNormal];
VRSeedingButton.selected = TRUE;
}
else
{
NSLog(@"VR button is set to false");
[VRSeedingButton setImage:[UIImage imageNamed:@"radio-btn.png"] forState:UIControlStateNormal];
VRSeedingButton.selected = FALSE;
}
ボタンが呼び出すメソッドを:
-(IBAction)conventionalSeedingMethodBtn:(id)sender
{
NSLog(@"self.conventionalSeedingMethodButton.selected: %@", self.conventionalSeedingMethodButton.selected ? @"YES" : @"NO");
if (self.conventionalSeedingMethodButton.selected)
{
NSLog(@"switching from true to false");
[self.conventionalSeedingMethodButton setImage:[UIImage imageNamed:@"radio-btn.png"] forState:UIControlStateNormal];
self.conventionalSeedingMethodButton.selected = FALSE;
}
else
{
NSLog(@"switching from false to true");
[self.conventionalSeedingMethodButton setImage:[UIImage imageNamed:@"radio-btn-selected.png"] forState:UIControlStateNormal];
self.conventionalSeedingMethodButton.selected = TRUE;
}
[self.VRSeedingMethodButton setImage:[UIImage imageNamed:@"radio-btn.png"] forState:UIControlStateNormal];
self.VRSeedingMethodButton.selected = FALSE;
}
-(IBAction)VRSeedingMethodBtn:(id)sender
{
NSLog(@"self.VRSeedingMethodButton.selected: %@", self.VRSeedingMethodButton.selected ? @"YES" : @"NO");
if (self.VRSeedingMethodButton.selected)
{
NSLog(@"switching from true to false");
[self.VRSeedingMethodButton setImage:[UIImage imageNamed:@"radio-btn.png"] forState:UIControlStateNormal];
self.VRSeedingMethodButton.selected = FALSE;
}
else
{
NSLog(@"switching from false to true");
[self.VRSeedingMethodButton setImage:[UIImage imageNamed:@"radio-btn-selected.png"] forState:UIControlStateNormal];
self.VRSeedingMethodButton.selected = TRUE;
}
[self.conventionalSeedingMethodButton setImage:[UIImage imageNamed:@"radio-btn.png"] forState:UIControlStateNormal];
conventionalSeedingMethodButton.selected = FALSE;
}
私は困惑しています=?
私は問題が何であるかを理解しました。プログラムでボタンを作成し、ビューに追加します。私はビューの約Nを作成します。私は間違ったビューのボタンをself.VRSeedingMethodButton&self.conventionalSeedingMethodButtonにリンクしています。コードは間違っているViewのボタンを変更するだけで動作します。私はコードを修正する必要があります。 – Padin215