gpt4 book ai didi

ios - UIPickerView 不显示数据或调用 viewForRow

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:02:47 36 4
gpt4 key购买 nike

当信息可用时,我正在动态地将数据添加到 pickerview。虽然我将数据添加到我的数组并调用 [picker reloadAllComponents] pickerview 不显示任何数据。

我还注意到以下两个代表都没有被调用:

- (NSString*)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component

-(UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view{

这是我的 viewDidLoad:

- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.

_pickerData = [[NSMutableArray alloc] init];
_ActiveDevice = [[NSString alloc]init];

// Connect data

self.DevicePicker.dataSource = self;
self.DevicePicker.delegate = self;

}

这是加载隐藏的 PickerView 的方法(我将其默认隐藏,直到按下按钮)

- (IBAction)FanDrop:(id)sender {
[self printFromCoreData];
[self.DevicePicker reloadAllComponents];
if (_DeviceBox) _DeviceBox.hidden = !_DeviceBox.hidden;
}

我使用在 coredata 中找到的内容加载数组,它是 DevicePicker 的数据源这一切似乎都有效,因为我可以在记录数组中的内容时找到信息。此外,当单击接受按钮时,即使没有显示正确的数据也会被加载,从而告诉我除了代码的显示部分之外的所有内容都工作正常。

任何见解 - 我愿意尝试几乎任何事情。

发表评论后,我意识到我忽略了在我的问题中包括代表。所以他们在这里:

// The number of columns of data
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
return 1;
}

// The number of rows of data
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
return _pickerData.count;
}

// The data to return for the row and component (column) that's being passed in
- (NSString*)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
//return _pickerData[row];
return [_pickerData objectAtIndex:row];
}

-(UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view{
return [_pickerData objectAtIndex:row];
}

这是我添加数组 pickerData 的方式:

@interface CMTViewController ()
{
NSMutableArray *_pickerData;
}

这是我用来加载 _pickerData 的 CoreData 方法:

-(void)printFromCoreData{
NSManagedObjectContext *managedObjectContext = [self managedObjectContext];
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:@"DeviceData"];
self.devices = [[managedObjectContext executeFetchRequest:fetchRequest error:nil] mutableCopy];


for (NSManagedObject *info in _devices) {

NSString *item = [NSString stringWithFormat:@"%1$@ %2$@",[info valueForKey:@"name"], [info valueForKey:@"ipAddress"]];

if (![_pickerData containsObject:item]) {
[_pickerData addObject:item];
}
}

NSLog(@"_pickerData length %lu", (unsigned long)[_pickerData count]);
[self.DevicePicker reloadAllComponents];
}

这是我按下风扇按钮时模拟器(或我的手机)中发生的情况的 View :

enter image description here

最佳答案

富士先生,

根据我们的谈话,我的建议如下:

- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
[self printFromCoreData];
_ActiveDevice = [[NSString alloc]init];

// Connect data

self.DevicePicker.dataSource = self;
self.DevicePicker.delegate = self;
}

- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
return _pickerData.count;
}

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
return 1;
}

- (NSString*)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
return _pickerData[row];
}

除非您想更改布局和添加自定义标签等,否则不要包含 reusingView

关于ios - UIPickerView 不显示数据或调用 viewForRow,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27353514/

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