gpt4 book ai didi

ios - UIPickerView 从 UISegmentedControl 更新

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:53:07 27 4
gpt4 key购买 nike

我正在尝试根据从 UISegmentedControl 选择的索引,使用不同的 NSArray 数据更新单个 UIPickerView。目前,当我更改控件时,numberOfRowsInComponent 不会更新,而 titleForRow 只会在滚动选择器时更新。

NSArrays 填充在 viewDidLoad 中,我在 SegmentedControl 的 IBAction 上使用 reloadAllComponents 方法。

@synthesize subnetView, classControl;

-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView {

//One column

return 1;
}

-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component {

//set number of rows

if (classControl.selectedSegmentIndex == 0){
NSLog(@"Class A Rows %d", [classAArray count]);
return classAArray.count;
}
else if (classControl.selectedSegmentIndex == 1){
return classBArray.count;
}
else if (classControl.selectedSegmentIndex == 2){
return classCArray.count;
}
return 0;
}
-(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {

//set item per row

if (classControl.selectedSegmentIndex == 0){
NSLog(@"Class A Rows %d", [classAArray count]);
return [classAArray objectAtIndex:row];
}
else if (classControl.selectedSegmentIndex == 1){
return [classBArray objectAtIndex:row];
}
else if (classControl.selectedSegmentIndex == 2){
return [classCArray objectAtIndex:row];
}
return 0;
}

-(IBAction)classChange{

[subnetView reloadAllComponents];
}

基于在界面生成器中选择要“选择”的选择器,选择器会加载正确的数组和行数。基于此代码,选择具有较小元素的数组时,numberOfrowsComponents尚未更新,并且在到达较小数组的末端时,该应用程序将崩溃。

所以我的两个问题:

  1. 只有在滚动时才会更新元素。
  2. 执行 reloadAllComponents 方法时,行数不会更新。

感谢收听!

最佳答案

我以前见过这个。通常是由于 pickerview outlet 没有连接,有效调用 reloadAllComponents 造成的。但是当您滚动时,连接的数据源和委托(delegate)方法仍然有效。

这可以通过使用 login outlet 的值轻松检查:

NSLog(@"%@",subnetView);

如果它像我预期的那样记录 (NULL),它会简单地连接您的 IB socket ,您就完成了。

关于ios - UIPickerView 从 UISegmentedControl 更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9551953/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com