0
我已經實現了一些代碼來將可展開/可摺疊功能添加到我的tableView部分。可以有0到6個部分,取決於核心數據對象。 我已更新viewForHeaderInSection
方法以包含if子句,具體取決於節名稱。在同一個方法中,我使用帶按鈕的UIView來展開或摺疊節的行。我還更新了heightForRowAtIndexPath方法以根據選定要展開/摺疊的部分更改行高。tableView可展開/可摺疊部分,某些部分不展開/摺疊
要測試的應用程序,我只檢查部分0和部分1
我把這裏的代碼對所有牽連方法:
//viewForHeaderInSection method
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
static NSString *header = @"customHeader";
// UITableViewHeaderFooterView *vHeader;
id <NSFetchedResultsSectionInfo> theSection = [[self.fetchedResultsController sections] objectAtIndex:section];
NSString *tmp = [theSection name];
NSLog(@"SECTIONNAME = %@",tmp);
UIView *mView = [[UIView alloc]initWithFrame:CGRectMake(10.0f, 0.0f, 300.0f, 20.0f)];
[mView setBackgroundColor:[UIColor redColor]];
if ([tmp isEqualToString:@"0"]){
NSLog(@"HAS ENTRADO EN SECTION 0");
UIImageView *logoView = [[UIImageView alloc]initWithFrame:CGRectMake(285.0f, 2.0f,20.0f,20.0f)];
[logoView setImage:[UIImage imageNamed:@"leftarrow.png"]];
[mView addSubview:logoView];
UIButton *bt = [UIButton buttonWithType:UIButtonTypeCustom];
[bt setFrame:CGRectMake(20.0f, -4.0f, 150.0f, 30.0f)];
[bt setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
[bt setTag:0];
[bt.titleLabel setFont:[UIFont systemFontOfSize:15]];
[bt.titleLabel setTextAlignment:NSTextAlignmentNatural];
[bt.titleLabel setTextColor:[UIColor yellowColor]];
NSString *valor = [NSString stringWithFormat:@"OVERDUE (%d)", [self.tableView
numberOfRowsInSection:section]];
[bt setTitle:valor forState: UIControlStateNormal];
[bt addTarget:self action:@selector(addCell:) forControlEvents:UIControlEventTouchUpInside];
[mView addSubview:bt];
return mView;
}
if ([tmp isEqualToString:@"1"]){
NSLog(@"HAS ENTRADO EN SECTION 1");
UIView *mView = [[UIView alloc]initWithFrame:CGRectMake(10.0f, 0.0f, 300.0f, 20.0f)];
[mView setBackgroundColor:[UIColor orangeColor]];
UIImageView *logoView = [[UIImageView alloc]initWithFrame:CGRectMake(285.0f, 2.0f,20.0f,20.0f)];
[logoView setImage:[UIImage imageNamed:@"leftarrow.png"]];
[mView addSubview:logoView];
UIButton *bt = [UIButton buttonWithType:UIButtonTypeCustom];
[bt setFrame:CGRectMake(20.0f, -4.0f, 150.0f, 30.0f)];
[bt setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
NSLog(@"SECTION 1 EN SEGUNDA LECTURA");
[bt setTag:1];
[bt.titleLabel setFont:[UIFont systemFontOfSize:15]];
[bt.titleLabel setTextAlignment:NSTextAlignmentNatural];
[bt.titleLabel setTextColor:[UIColor yellowColor]];
NSString *valor = [NSString stringWithFormat:@"TODAY (%d)", [self.tableView
numberOfRowsInSection:section]];
[bt setTitle:valor forState: UIControlStateNormal];
[bt addTarget:self action:@selector(addCell1:) forControlEvents:UIControlEventTouchUpInside];
[mView addSubview:bt];
return mView;
}
return mView;
}
// heightForRowAtIndexPath method
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
if (indexPath.section == 0){
return heightOfSection0;NSLog(@"HAS PULSADO SECTION 0 CERRADA");
}
else {
return 50.0f;NSLog(@"HAS PULSADO SECTION 0 ABIERTA");
}
if (indexPath.section == 1){
return heightOfSection1;NSLog(@"HAS PULSADO SECTION 1 CERRADA");
}
else {
return 50.0f;NSLog(@"HAS PULSADO SECTION 0 ABIERTA");
}
}
而且現在的按鈕操作方法:
- (void)addCell:(UIButton *)bt{
// If section of more information
if(bt.tag == 0) {
NSLog(@"HAS PULSADO SECTION 0 EN ADDCELL");
// Initially more info is close, if more info is open
if(isSection0Open) {
// Set height of section
heightOfSection0 = 45.0f;
// Reset the parameter that more info is closed now
isSection0Open = NO;
}else if (isSection0Open==NO){
// Set height of section
heightOfSection0 = 0.0f;
// Reset the parameter that more info is closed now
isSection0Open = YES;
}
}
[self.tableView reloadData];
[self.tableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationFade];
}// end addCell
- (void)addCell1:(UIButton *)bt{
// If section of more information
if(bt.tag == 1) {
NSLog(@"HAS PULSADO SECTION 1 EN ADDCELL1");
// Initially more info is close, if more info is open
if(isSection1Open) {
// Set height of section
heightOfSection1 = 45.0f;
// Reset the parameter that more info is closed now
isSection1Open = NO;
}else if (isSection1Open==NO){
// Set height of section
heightOfSection1 = 0.0f;
// Reset the parameter that more info is closed now
isSection1Open = YES;
}
}
[self.tableView reloadData];
[self.tableView reloadSections:[NSIndexSet indexSetWithIndex:1] withRowAnimation:UITableViewRowAnimationFade];
}// end addCell1
第0節沒有問題,它按預期展開和摺疊。問題在於第1部分,我想當我嘗試爲其餘部分實現相同的代碼時,會發生同樣的問題...
任何幫助都是值得歡迎的。 謝謝。