gpt4 book ai didi

ios - 如何删除 UITableView 部分标题删除后创建的空间?

转载 作者:可可西里 更新时间:2023-11-01 06:20:39 26 4
gpt4 key购买 nike

我有一个 UITableView。这是动态表。当您触摸“添加文件”按钮时,我正在创建一个新的部分和行。如果您再次触摸,我只会创建行。当您触摸“添加号码”按钮时,我正在创建一个新的部分和行。如果您再次触摸,我只会创建行。还行吧。但是如果你删除第一部分,第二部分不会聚焦到顶部。我正在添加一些屏幕截图和我的所有代码。

请帮帮我。

这是我的第一个屏幕

enter image description here

我添加了一个"file"和两个“数字”

enter image description here

我删除了"file",但第二部分没有出现。

enter image description here

代码:

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController
@synthesize tblListe,btnCancel,btnEdit;
- (void)viewDidLoad {
[super viewDidLoad];
self.automaticallyAdjustsScrollViewInsets = NO;
FileArr = [[NSMutableArray alloc] init];
NumberArr = [[NSMutableArray alloc] init];
}

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
int a=0;
if (section==0) {
if(FileArr.count>0)
a=FileArr.count;
} else {
if(NumberArr.count>0)
a=NumberArr.count;
}
return a;
}

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

-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{
return 37.0;
}

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
UITableViewCell *hucre = [[UITableViewCell alloc] init];
if(indexPath.section==0){
hucre.textLabel.text=[FileArr objectAtIndex:indexPath.row];
}else{
hucre.textLabel.text=[NumberArr objectAtIndex:indexPath.row];
}
hucre.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
return hucre;
}

-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
UIView *AnaView=[[UIView alloc]initWithFrame:CGRectMake(0,0,self.view.frame.size.width,0)];

UIView *AsilView=[[UIView alloc]initWithFrame:CGRectMake(5,0,self.view.frame.size.width ,35)];

CGRect labelFrame = CGRectMake(5, 0, self.view.frame.size.width/3, 35);
UILabel *myLabel = [[UILabel alloc] initWithFrame:labelFrame];
int say=0;
if(section==0){
myLabel.text = @"Files";
say=FileArr.count;
}else{
myLabel.text = @"Numbers";
say=NumberArr.count;
}
myLabel.font = [UIFont boldSystemFontOfSize:14.0f];
myLabel.textAlignment = NSTextAlignmentCenter;
myLabel.textColor = [UIColor whiteColor];
myLabel.backgroundColor = [self colorWithHexString:@"ce1b27"];

UIView *LineView=[[UIView alloc]initWithFrame:CGRectMake(5,AsilView.frame.size.height,self.view.frame.size.width-5,2)];
LineView.backgroundColor = [self colorWithHexString:@"ce1b27"];

[AnaView addSubview:AsilView];
[AnaView addSubview:myLabel];
[AnaView addSubview:LineView];
if (say>0) {
return AnaView;
}else{
return nil;
}
}

-(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{
NSString *x;
if (section==0) {
if(FileArr.count>0)
x=@"Files";
else
x=nil;
} else {
if (NumberArr.count>0)
x=@"Numbers";
else
x=nil;
}
return x;
}

-(NSString *)tableView:(UITableView *)tableView titleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath *)indexPath{
return @"Delete";
}

-(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath{
if(editingStyle == UITableViewCellEditingStyleDelete){
if (indexPath.section==0) {
[FileArr removeObjectAtIndex:indexPath.row];
}else{
[NumberArr removeObjectAtIndex:indexPath.row];
}
}
[self SatirIslem:0];
//NSLog(@"%@",FileArr);
[tblListe reloadData];
}

-(BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath{
return YES;
}

- (IBAction)Duzenle:(id)sender {
[tblListe setEditing:YES animated:YES];
btnCancel.enabled = YES;
}

- (IBAction)Iptal:(id)sender {
[tblListe setEditing:NO animated:YES];
btnCancel.enabled = NO;
}

- (IBAction)DosyaEkle:(id)sender {
[FileArr addObject:@"This is a File"];
[self SatirIslem:1];
}
- (IBAction)NumaraEkle:(id)sender {
[NumberArr addObject:@"This is a Number"];
[self SatirIslem:1];
}

-(void)SatirIslem:(NSInteger) islem{
CGFloat x=0,y=0,w=0,h=0;
if (islem==1) { // satır Ekle
x=tblListe.frame.origin.x;
y=tblListe.frame.origin.y;
w=tblListe.frame.size.width;
h=tblListe.frame.size.height;
if(FileArr.count==1 || NumberArr.count==1){
h+=35+44; // 35 header için 44 satır için
}else{
h+=44;
}

}

if (islem==0) {
x=tblListe.frame.origin.x;
y=tblListe.frame.origin.y;
w=tblListe.frame.size.width;
h=tblListe.contentSize.height;
if(FileArr.count==0 && NumberArr.count==0){
h=1;
}else if(FileArr.count==0 || NumberArr.count==0) {
h-=44+35;// 35 header için 44 satır için
}else{
h-=44;
}
}
tblListe.frame=CGRectMake(x,y,w,h);
[tblListe reloadData];
}

-(UIColor*)colorWithHexString:(NSString*)hex
{
NSString *cString = [[hex stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] uppercaseString];

if ([cString length] < 6) return [UIColor grayColor];
if ([cString hasPrefix:@"0X"]) cString = [cString substringFromIndex:2];
if ([cString length] != 6) return [UIColor grayColor];
NSRange range;
range.location = 0;
range.length = 2;
NSString *rString = [cString substringWithRange:range];
range.location = 2;
NSString *gString = [cString substringWithRange:range];
range.location = 4;
NSString *bString = [cString substringWithRange:range];
unsigned int r, g, b;
[[NSScanner scannerWithString:rString] scanHexInt:&r];
[[NSScanner scannerWithString:gString] scanHexInt:&g];
[[NSScanner scannerWithString:bString] scanHexInt:&b];
return
[UIColor colorWithRed:((float) r / 255.0f)green:((float) g / 255.0f) blue:((float) b / 255.0f)alpha:1.0f];
}

@end

最佳答案

您可以通过返回不同的高度值来解决这个问题。

-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{
if (section==0) {
if(FileArr.count==0)
return 0;
} else {
if(NumberArr.count==0)
return 0;
}
return 37.0;
}

关于ios - 如何删除 UITableView 部分标题删除后创建的空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28347594/

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