无法以编程方式调用(void)函数

时间:2015-03-17 16:58:25

标签: ios objective-c uitableview

我遇到了一个奇怪的问题。我试图以编程方式调用void函数,void函数是seguent:

- (void)expView:(ExpandableTableView *)expView didExpandAtIndex:(NSInteger)index {
    /* CODE HERE */
}

所以,如果我正确理解它,这个函数有两个参数:expView,类ExpandableTableViewindex NSInteger类型。如果您想知道ExpandableTableViewUITableViewthis 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函数]但没有任何反应。

你能帮助我吗?

2 个答案:

答案 0 :(得分:1)

你实际上从不打电话给这个方法,你说:

  

我尝试使用断点检查所有被调用[甚至是void函数]但没有任何反应。

你究竟是什么意思? expView:didExpandAtIndex:内的断点实际上是触发了吗?如果这是真的(我不知道它是如何被调用的,但无论如何),没有任何反应是合乎逻辑的,因为那里没有代码。

另一件事是你对expView:shouldExpandAtIndex:

返回的索引一无所知

简而言之,您的代码有点奇怪。 如果你能更清楚地解释你正在尝试做什么,我可以帮助你。

答案 1 :(得分:0)

The project you link to似乎没有定义用于以编程方式扩展表格视图单元格的API。

您在代码中所做的似乎是调用委托回调并期望发生某些事情。委托方法从ExpandableTableView实例调用,以询问(委托)特定单元格是否应展开(expView:shouldExpandAtIndex:),或在单元格扩展时通知您( expView:didExpandAtIndex:)。

该类似乎提供的是一种委托方法,用于设置某些单元格“默认情况下”进行扩展(在初始加载时,并且在我可以告知之后调用-reloadData):{{ 1}}。

因此,例如,如果您只想在表视图加载时展开所有其他单元格,则可以实现委托方法,如下所示:

-expandableTableView:sectionExpandedByDefault:

如果这不适合你需要的东西,你可能不得不深入研究实现并自己编写(不应该太困难,因为逻辑已经在那里点击一个单元格)。