当我想在我的视图中使用自定义按钮扩展特定的单个部分时,我使用了名为“ExpandableTableView”的第三方可扩展表视图。我的代码片段是:
UIView *view=Gesture.view;
isFirsTime=NO;
//NSLog(@"%ld",(long)view.tag);
for (int h=0; h<dicAll.count; h++)
{
NSString *strRegisterId=[[[dictStatndardDefectsResult valueForKey:@"defectdata:"]valueForKey:@"projectdefectid"]objectAtIndex:h];
NSString *strBtnTag=[NSString stringWithFormat:@"%ld",(long)view.tag];
if ([strRegisterId isEqualToString:strBtnTag])
{
btnIndex=h;
// NSLog(@"%ld",(long)btnIndex);
isTappedMarker=YES;
}
}
NSMutableArray *indexPaths=[[NSMutableArray alloc]init];
[indexPaths addObject:[NSIndexPath indexPathForRow:0 inSection:btnIndex]];
NSLog(@"%@",arrDefectImages);
NSLog(@"numberOfRowsInSection: %ld",(long)[self tableView:tblSupplierDefect numberOfRowsInSection:btnIndex]);
[tblSupplierDefect beginUpdates];
[self.tblSupplierDefect insertRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationAutomatic];
[tblSupplierDefect endUpdates];
其中btnIndex是我要扩展的部分编号。
答案 0 :(得分:0)
我通过使用它实现了类似的东西:
func didTapOnHeader(tapGesture: UITapGestureRecognizer) {
let view = tapGesture.view as! ViewHeader
// collapse if already expended.
if view.tag == self.dataBinder.selectedSection {
//collaps the section
self.dataBinder.selectedSection = nil
self.tableView.reloadSections(NSIndexSet(index:view.tag), withRowAnimation: UITableViewRowAnimation.Automatic)
}else {
// collapse last selected section, at a time one section should be selected.
self.dataBinder.selectedSection = nil
self.tableView.reloadData()
//expand plan details
self.dataBinder.selectedSection = view.tag
self.tableView.reloadSections(NSIndexSet(index:view.tag), withRowAnimation: UITableViewRowAnimation.Automatic)
}
}
func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let view = ViewHeader.instanceFromNib()
view.tag = section
let gesture = UITapGestureRecognizer(target: self, action: #selector(ViewController.didTapOnHeader(_:)))
view.addGestureRecognizer(gesture)
//### Assignment ###
view.planDescriptionLabel.text = plan.planDescription
return view
}
这将关闭以前选择的部分,并且将在ta时间仅展开一个部分。