我遇到了一个奇怪的问题。我试图以编程方式调用void
函数,void
函数是seguent:
- (void)expView:(ExpandableTableView *)expView didExpandAtIndex:(NSInteger)index {
/* CODE HERE */
}
所以,如果我正确理解它,这个函数有两个参数:expView
,类ExpandableTableView
和index
NSInteger
类型。如果您想知道ExpandableTableView
是UITableView
从this GitHub项目导入的子类,我用它在项目中创建一个带有可扩展单元格的UITableView
。< / p>
我遇到的问题是我无法以编程方式调用void函数:
[self expView:nameOfTheExpandableTableView didExpandAtIndex:1];
我无法弄清楚原因。此外,我需要以编程方式扩展的UITableView不是使用Storyboard创建的,因此我在for in
viewDidLoad
周期的“插座”
这是我的代码:
@interface ViewController () {
ExpandableTableView *customizedTableView;
}
- (void)viewDidLoad {
[super viewDidLoad];
/* HERE I SEARCH FOR ALL EXPANDABLETABLEVIEW(s) */
for (customizedTableView in [self.view subviews]) {
if ([customizedTableView isKindOfClass:[ExpandableTableView class]]) {
[self expView:customizedTableView shouldExpandAtIndex:1];
}
}
}
- (BOOL)expView:(ExpandableTableView *)expView shouldExpandAtIndex:(NSInteger)index {
/* THIS FUNCTION IS CALLED JUST BEFORE THE VOID ONE */
return index;
}
- (void)expView:(ExpandableTableView *)expView didExpandAtIndex:(NSInteger)index {
}
代码工作,实际上如果我尝试使用断点检查所有被调用[甚至是void函数]但没有任何反应。
你能帮助我吗?
答案 0 :(得分:1)
你实际上从不打电话给这个方法,你说:
我尝试使用断点检查所有被调用[甚至是void函数]但没有任何反应。
你究竟是什么意思? expView:didExpandAtIndex:
内的断点实际上是触发了吗?如果这是真的(我不知道它是如何被调用的,但无论如何),没有任何反应是合乎逻辑的,因为那里没有代码。
另一件事是你对expView:shouldExpandAtIndex:
简而言之,您的代码有点奇怪。 如果你能更清楚地解释你正在尝试做什么,我可以帮助你。
答案 1 :(得分:0)
The project you link to似乎没有定义用于以编程方式扩展表格视图单元格的API。
您在代码中所做的似乎是调用委托回调并期望发生某些事情。委托方法从ExpandableTableView
实例调用,以询问你(委托)特定单元格是否应展开(expView:shouldExpandAtIndex:
),或在单元格扩展时通知您( expView:didExpandAtIndex:
)。
该类似乎提供的是一种委托方法,用于设置某些单元格“默认情况下”进行扩展(在初始加载时,并且在我可以告知之后调用-reloadData
):{{ 1}}。
因此,例如,如果您只想在表视图加载时展开所有其他单元格,则可以实现委托方法,如下所示:
-expandableTableView:sectionExpandedByDefault:
如果这不适合你需要的东西,你可能不得不深入研究实现并自己编写(不应该太困难,因为逻辑已经在那里点击一个单元格)。