gpt4 book ai didi

ios - uiTableViewCell 添加行和图像,第二次点击删除行

转载 作者:行者123 更新时间:2023-11-29 12:52:22 26 4
gpt4 key购买 nike

几个小时以来,我一直在努力解决这个问题。我只是老被困在这里。我想要完成的基本上是在表格 View 中刚刚点击的行的正下方插入一行,此外我想向该行添加图像并使图像可点击以响应其点击事件。

这是我的代码。 我实现了(我相信)必要的方法来处理 uitableview 的所有操作。当用户点击单元格时,我会通过执行以下代码来处理该操作。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{

if (debug==1) {
NSLog(@"running line 225%@ '%@'", self.class, NSStringFromSelector(_cmd));
}



Locations *location = nil;
Locations *tempObject = [[Locations alloc]init];




//test to see if we are looking for the search box or if we are essentially looking from the main view controller.
if (self.searchDisplayController.active) {
location= [self.searchResults objectAtIndex:indexPath.row];
NSLog(@"location : %@" ,location.locationName);


} else {
location = [self.locations objectAtIndex:indexPath.row];
NSLog(@"location : %@" ,location.locationName);
//set the new indexpath to 1 more then before so that we can essetially add a row right below the actual tapped item.
NSIndexPath *newPath = [NSIndexPath indexPathForRow:indexPath.row + 1 inSection:indexPath.section];
indexPath = newPath;


[self.locations insertObject:tempObject atIndex:indexPath.row ];


[tableView insertRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationBottom];

self.visibleCell =YES; //set this boolean variable so that we can add a specific row image to this var
// self.locations[0].isItVisible = YES;

}//ends the else statement.


[tableView deselectRowAtIndexPath:indexPath animated:YES];



}

上面的代码在我的表格 View 中插入了一个空单元格。但是,我如何设置单元格,使其自定义且与其他单元格不同。换句话说,我的初始单元格数据源基本上绑定(bind)到一个 nsobject 和一个字符串属性位置名称。但是,当我尝试用上述方法更新表格单元格时,我显然无法将图像添加到字符串中,所以我遇到了错误。 所以我尝试改为在

上进行更新
 (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

基本上是通过检查变量是否设置为 true 或 false,但事实证明这是错误的,因为即使在我滚动时也会调用此方法。

我应该怎么做。我想我必须在 didselectrowindexaspath 方法中完成这一切。但我不知道如何将新插入的单元格更改为仅包含图像。任何帮助将不胜感激。

编辑这是我尝试在 cellforrowindexpath 方法下添加图像的方法。

if(self.visibleCell==YES){
UIImage *clkImg = [UIImage imageNamed:@"alarm_clock.png"];

cell.imageView.image = clkImg;

}

我是菜鸟,所以我不确定我是否正确地执行了此操作。

编辑这是完整的cellforatindexpath

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
if (debug==1) {
NSLog(@"running line 159 %@ '%@'", self.class, NSStringFromSelector(_cmd));
}
// NSLog(@"cell for row at index path just got called");

//JAMcustomCell *myCell = [[JAMcustomCell alloc]init];

static NSString *CellIdentifier = @"ListPrototypeCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];


if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}


Locations * locations = [[Locations alloc]init];
//tableView.backgroundColor = [UIColor blackColor];

// NSLog(@"this is visible '%hhd'", locations.isItVisible);
if(self.visibleCell==YES){
UIImage *clkImg = [UIImage imageNamed:@"alarm_clock.png"];

cell.imageView.image = clkImg;

}




if (tableView == self.searchDisplayController.searchResultsTableView)
{
locations = [self.searchResults objectAtIndex:indexPath.row];
}

else{

locations = [self.locations objectAtIndex:indexPath.row];

}


cell.textLabel.text = locations.locationName;
cell.textLabel.textColor = [UIColor whiteColor];
//cell.backgroundColor =[UIColor blackColor];
// cell.backgroundColor =[UIColor colorWithPatternImage:[UIImage imageNamed:@"Graytbl.fw.png"]];

cell.backgroundView = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"blueTbl.fw.png"]];
cell.selectedBackgroundView = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"blueTbl.fw.png"]];
// UIFont *myFont = [ UIFont fontWithName: @"Oswald" size: 25.0 ];
// cell.textLabel.font = myFont;


cell.textLabel.font= self.MyFont;//[UIFont fontWithName:@"Oswald-Regular.ttf" size:15];

return cell;
}

最佳答案

试试这个方法,我用了你的想法Bool

#pragma mark - Table View Data Source

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

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return self.numberOfRows;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
if(self.visibleCell){
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"imageViewCell" forIndexPath:indexPath];//ListPrototypeCell
UIImageView *imageVIew = (UIImageView *)[cell viewWithTag:1];
[imageVIew setImage:[UIImage imageNamed:@"alarm_clock.png"]];
return cell;
}else{
return [tableView dequeueReusableCellWithIdentifier:@"ListPrototypeCell" forIndexPath:indexPath];
}

}



#pragma mark - Table View Delegate


- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
[tableView deselectRowAtIndexPath:indexPath animated:YES];


if(!self.visibleCell){
self.numberOfRows++;
self.visibleCell = YES;
NSIndexPath *indexPathCell = [NSIndexPath indexPathForRow:indexPath.row + 1 inSection:0];
[self.tableView insertRowsAtIndexPaths:@[indexPathCell] withRowAnimation:UITableViewRowAnimationBottom];
}else{
self.numberOfRows--;
self.visibleCell = NO;
NSIndexPath *indexPathCell = [NSIndexPath indexPathForRow:indexPath.row + 1 inSection:0];
[self.tableView deleteRowsAtIndexPaths:@[indexPathCell] withRowAnimation:UITableViewRowAnimationTop];
}

}

我创建了一个演示 project给你。

希望对你有帮助

关于ios - uiTableViewCell 添加行和图像,第二次点击删除行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22111232/

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