我有一個UITableView。它是動態表格。當你觸摸「添加文件」按鈕時,我正在創建一個新的部分和行。如果再次觸摸,我只創建一行。當你點擊「添加數字」按鈕時,我正在創建一個新的部分和行。如果再次觸摸,我只創建一行。還行吧。但是,如果您刪除第一部分,則第二部分不會將焦點置於頂部。我添加了一些截圖和我的所有代碼。如何刪除UITableView節頭去除後創建的空間?
請幫幫我。
這是我的第一個屏幕
我增加了一個 「文件」 和兩個 「數量」
而且我刪除了 「文件」但第二節沒有上漲。
代碼:
#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)
[email protected]"Files";
else
x=nil;
} else {
if (NumberArr.count>0)
[email protected]"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
以供將來參考修改您的截屏的尺寸會讓你的問題更方便用戶的朋友,目前也很難理解問題的圖像是太大的屏幕 – 2015-02-06 00:39:51
你說得對。謝謝你的建議。我編輯了我的問題。仍然在等待解決方案:( – 2015-02-06 07:09:52