gpt4 book ai didi

iphone - cellForRowAtIndexPath 返回空值

转载 作者:行者123 更新时间:2023-12-01 18:01:11 46 4
gpt4 key购买 nike

我正在开发一个应用程序,我有一个 UITableView,它使用 tableView 方法填充了一个 NSMutableArray:cellForRowAtIndexPath:,它工作正常,但问题是我想更改 tableViewCell 的图像,当我尝试访问单元格时它总是返回 null 。我在这里给出代码,请告诉我是否遗漏了什么......

在 viewController.h 文件中

    @interface DevicesViewController : UIViewController{
IBOutlet UITableView *deviceTableVIew;

NSMutableArray *devicesArray;
NSMutableArray *deviceDetailArray;
}

@property (nonatomic,retain) IBOutlet UITableView *deviceTableVIew;
@property (nonatomic,retain) NSMutableArray *devicesArray;
@property (nonatomic,retain) NSMutableArray *deviceDetailArray;

-(IBAction)setDevicesOn:(id)sender;
-(IBAction)setDevicesOff:(id)sender;

@end

在 View controller.m 文件中
 -(IBAction)setDevicesOn:(id)sender{

UITableViewCell *cell = [deviceTableVIew cellForRowAtIndexPath:[NSIndexPath indexPathForRow:3 inSection:1]];

cell.imageView.image = [UIImage imageNamed:@"device-on-image.png"];

[deviceTableVIew reloadData];

...
}

-(IBAction)setDevicesOff:(id)sender{

UITableViewCell *cell = [deviceTableVIew cellForRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:1]];

cell.imageView.image = [UIImage imageNamed:@"device-off-image.png"];

[deviceTableVIew reloadData];

...

}

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return [devicesArray count];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

static NSString *CellIdentifier = @"Cell";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
}

cell.textLabel.text = [devicesArray objectAtIndex:indexPath.row];
cell.detailTextLabel.text = [deviceDetailArray objectAtIndex:indexPath.row];
cell.imageView.image = [UIImage imageNamed:@"device-off-image.png"];

cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;

return cell;
}

最佳答案

您的 UITableViewDataSource(您的 viewController)告诉 tableView 它只有一个部分。

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 1;
}

在您的 setDevicesOff:方法您使用的 indexPath 的部分为 1。
因为第一部分的索引为 0,所以第 1 部分的 indexPath 尝试引用 tableView 中的第二部分。您的 tableView 没有该部分,因此返回 nil 。

试试这个:
-(IBAction)setDevicesOff:(id)sender{

UITableViewCell *cell = [deviceTableVIew cellForRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0]];
cell.imageView.image = [UIImage imageNamed:@"device-off-image.png"];
//[deviceTableVIew reloadData]; this shouldn't be necessary
...
}

关于iphone - cellForRowAtIndexPath 返回空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9683881/

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