Ios 在选择段后,我们如何回忆PickView的didSelectRow?
我使用了一个分段控件,让用户在pickerview中选择一行后,在两种类型的结果之间进行选择。但是,当我在pickerview中选择一行时,它会显示所选段的结果,但我选择另一段时,它不会执行任何操作,直到我再次选择该行 这是我的密码:Ios 在选择段后,我们如何回忆PickView的didSelectRow?,ios,objective-c,xcode,cocoa-touch,uipickerview,Ios,Objective C,Xcode,Cocoa Touch,Uipickerview,我使用了一个分段控件,让用户在pickerview中选择一行后,在两种类型的结果之间进行选择。但是,当我在pickerview中选择一行时,它会显示所选段的结果,但我选择另一段时,它不会执行任何操作,直到我再次选择该行 这是我的密码: - (void)pickerView:(UIPickerView *)thePickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component { i=row; switch (i) {
- (void)pickerView:(UIPickerView *)thePickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
i=row;
switch (i) {
case 0:
case 1
if(_segment.selectedSegmentIndex == 1){
[self Fquarter];
[self Tquarter];
[self Ten];
[self Twenty];
[self Fourty];
[self Fifty];
NSLog(@"AUDIO 10 MINS");
}
if(_segment.selectedSegmentIndex == 0){
[self SFquarter];
[self STquarter];
[self STen];
[self STwenty];
[self SFourty];
[self SFifty];
NSLog(@"Visual 10 MINS");
}
每种情况都是这样,我遗漏了什么?我认为您需要调用一个方法,该方法包含来自picker委托方法和分段控件的action方法的所有[self Fquarter]语句。类似于此的pickerSelectedRow是一个类型为NSInteger的属性:
@interface ViewController ()
@property (weak,nonatomic) IBOutlet UISegmentedControl *segment;
@property (nonatomic) NSInteger pickerSelectedRow;
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}
- (void)pickerView:(UIPickerView *)thePickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
self.pickerSelectedRow = row;
[self doStuff];
}
-(IBAction)segmentChosen:(UISegmentedControl *)sender {
[self doStuff];
}
-(void)doStuff {
switch (self.pickerSelectedRow) {
case 0:
case 1:
if(_segment.selectedSegmentIndex == 1){
[self Fquarter];
[self Tquarter];
[self Ten];
[self Twenty];
[self Fourty];
[self Fifty];
NSLog(@"AUDIO 10 MINS");
}
if(_segment.selectedSegmentIndex == 0){
[self SFquarter];
[self STquarter];
[self STen];
[self STwenty];
[self SFourty];
[self SFifty];
NSLog(@"Visual 10 MINS");
}
}
}
使用这种类型的排列,当选择器视图值更改或分段控件的值更改时,将调用设置值的方法。当然,这就是可能发生的情况。pickerView:didSelectRow:Incomonent:仅在更改选择器中的行选择时调用。在分段控件中选择另一个分段时,不会再次调用它。还有,你在用案例1系列做什么?如果不在switch语句中,您就不能使用它。@rdelmar我在一个switch语句中,我只显示部分代码,但我刚刚编辑了我的Q来显示它。那么,你有什么建议?我怎么回忆起迪德罗?谢谢!那么,我应该这样申报吗@属性读写,非原子NSInteger选择器SelectedRow@user1949873,应该可以,我通常只对整数做非原子运算。另外,除非您需要从其他类访问它,否则它应该放在.m文件顶部的类扩展名中,而不是放在.h中。请你把它添加到你的答案中好吗?@user1949873,我已经编辑了我的答案来展示整个.m文件。非常感谢你,你真是个救命恩人