@property (assign)
BOOL
isOpen;
self.isOpen = NO;
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return
[_dataList count];
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
if
(self.isOpen) {
if
(self.selectIndex.section == section) {
return
[[[_dataList objectAtIndex:section] objectForKey:@
"list"
] count]+1;;
}
}
return
1;
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
return
40;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
if
(self.isOpen&&self.selectIndex.section == indexPath.section&&indexPath.row!=0) {
static
NSString *CellIdentifier = @
"Cell2"
;
Cell2 *cell = (Cell2*)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if
(!cell) {
cell = [[[NSBundle mainBundle] loadNibNamed:CellIdentifier owner:self options:nil] objectAtIndex:0];
}
NSArray *list = [[_dataList objectAtIndex:self.selectIndex.section] objectForKey:@
"list"
];
cell.titleLabel.text = [list objectAtIndex:indexPath.row-1];
return
cell;
}
else
{
static
NSString *CellIdentifier = @
"Cell1"
;
Cell1 *cell = (Cell1*)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if
(!cell) {
cell = [[[NSBundle mainBundle] loadNibNamed:CellIdentifier owner:self options:nil] objectAtIndex:0];
}
NSString *name = [[_dataList objectAtIndex:indexPath.section] objectForKey:@
"name"
];
cell.titleLabel.text = name;
[cell changeArrowWithUp:([self.selectIndex isEqual:indexPath]?YES:NO)];
return
cell;
}
}
#pragma mark - Table view delegate
- (
void
)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if
(indexPath.row == 0) {
if
([indexPath isEqual:self.selectIndex]) {
self.isOpen = NO;
[self didSelectCellRowFirstDo:NO nextDo:NO];
self.selectIndex = nil;
}
else
{
if
(!self.selectIndex) {
self.selectIndex = indexPath;
[self didSelectCellRowFirstDo:YES nextDo:NO];
}
else
{
[self didSelectCellRowFirstDo:NO nextDo:YES];
}
}
}
else
{
NSDictionary *dic = [_dataList objectAtIndex:indexPath.section];
NSArray *list = [dic objectForKey:@
"list"
];
NSString *item = [list objectAtIndex:indexPath.row-1];
UIAlertView *alert = [[[UIAlertView alloc] initWithTitle:item message:nil delegate:nil cancelButtonTitle:@
"取消"
otherButtonTitles: nil] autorelease];
[alert show];
}
[tableView deselectRowAtIndexPath:indexPath animated:YES];
}
- (
void
)didSelectCellRowFirstDo:(
BOOL
)firstDoInsert nextDo:(
BOOL
)nextDoInsert
{
self.isOpen = firstDoInsert;
Cell1 *cell = (Cell1 *)[self.expansionTableView cellForRowAtIndexPath:self.selectIndex];
[cell changeArrowWithUp:firstDoInsert];
[self.expansionTableView beginUpdates];
NSInteger section = self.selectIndex.section;
NSInteger contentCount = [[[_dataList objectAtIndex:section] objectForKey:@
"list"
] count];
NSMutableArray* rowToInsert = [[NSMutableArray alloc] init];
for
(NSUInteger i = 1; i < contentCount + 1; i++) {
NSIndexPath* indexPathToInsert = [NSIndexPath indexPathForRow:i inSection:section];
[rowToInsert addObject:indexPathToInsert];
}
if
(firstDoInsert)
{ [self.expansionTableView insertRowsAtIndexPaths:rowToInsert withRowAnimation:UITableViewRowAnimationTop];
}
else
{
[self.expansionTableView deleteRowsAtIndexPaths:rowToInsert withRowAnimation:UITableViewRowAnimationTop];
}
[rowToInsert release];
[self.expansionTableView endUpdates];
if
(nextDoInsert) {
self.isOpen = YES;
self.selectIndex = [self.expansionTableView indexPathForSelectedRow];
[self didSelectCellRowFirstDo:YES nextDo:NO];
}
if
(self.isOpen) [self.expansionTableView scrollToNearestSelectedRowAtScrollPosition:UITableViewScrollPositionTop animated:YES];
}
|
QQ好友列表,点击折叠展开
最新推荐文章于 2020-07-08 12:08:24 发布