我遇到了一个奇怪的问题,我肯定有一个简单的解决方法/解释,但我周末都没有运气。
我有一个自定义UIView
作为我的tableHeaderView,其中包含两个UIButton
。按一个UIButton
或另一个,通过更改dataSource并执行UITableView
来更改[tableView reloadData]
中的数据。
我遇到的问题是,在按下其中一个按钮后,我重新加载了表,但我没有行(dataSource / table为空)。我不能按另一个按钮来更改dataSource并重新加载表格,因为它变得没有响应,没有响应触摸。
我唯一的解释是,UITableView
可能会在空虚时对触摸做出响应吗?但似乎是tableHeaderView没有响应的错误..
在iOS 6和iOS 7中都会发生这种情况。
PS:我知道在执行reloadData之前我可以检测到dataSource是空的并保留其他dataSource的数据,但我需要按下按钮并在空白时显示一条消息,这样对我没有帮助。
这就是我创建Table标题视图的方法,并将其分配给tableView。
self.tableCustomHeader = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 48)];
self.tableCustomHeader.backgroundColor = [UIColor whiteColor];
// Configure Header
self.rankingBtn = [UIButton buttonWithType:UIButtonTypeCustom];
self.rankingBtn.frame = CGRectMake(3, 4, 157, 40);
self.rankingBtn.adjustsImageWhenHighlighted = NO;
self.rankingBtn.adjustsImageWhenDisabled = NO;
[self.rankingBtn setImage:[UIImage imageNamed:@"amigos_boton_ranking_on.png"] forState:UIControlStateNormal];
[self.rankingBtn setImage:[UIImage imageNamed:@"amigos_boton_ranking_off.png"] forState:UIControlStateDisabled];
[self.rankingBtn setImage:[UIImage imageNamed:@"amigos_boton_ranking_off.png"] forState:UIControlStateHighlighted];
[self.rankingBtn addTarget:self action:@selector(fetchRanking:) forControlEvents:UIControlEventTouchUpInside];
if (self.listType == FriendsListTypeRanking) {
self.alfabeticBtn.enabled = NO;
}
self.alfabeticBtn = [UIButton buttonWithType:UIButtonTypeCustom];
self.alfabeticBtn.frame = CGRectMake(160, 4, 157, 40);
self.alfabeticBtn.adjustsImageWhenHighlighted = NO;
self.alfabeticBtn.adjustsImageWhenDisabled = NO;
[self.alfabeticBtn setImage:[UIImage imageNamed:@"amigos_boton_alfabetico_on.png"] forState:UIControlStateNormal];
[self.alfabeticBtn setImage:[UIImage imageNamed:@"amigos_boton_alfabetico_off.png"] forState:UIControlStateDisabled];
[self.alfabeticBtn setImage:[UIImage imageNamed:@"amigos_boton_alfabetico_off.png"] forState:UIControlStateHighlighted];
[self.alfabeticBtn addTarget:self action:@selector(fetchFriends:) forControlEvents:UIControlEventTouchUpInside];
if (self.listType == FriendsListTypeAlfabetic) {
self.alfabeticBtn.enabled = NO;
}
[self.tableCustomHeader addSubview:self.alfabeticBtn];
[self.tableCustomHeader addSubview:self.rankingBtn];
[self.table setTableHeaderView:self.tableCustomHeader];
之后,没有太多可以展示的东西了。如果我为numberOfRowsInSection
返回0,我就不能再按下tableHeaderView中的另一个UIButton
来更改为另一组数据。
答案 0 :(得分:0)
如果没有看到选择器的实现,那么仍无法弄清楚应用程序的错误。虽然一个看似容易解决的问题是您始终将alfabeticBtn.enabled
设置为NO
。
请参阅:
if (self.listType == FriendsListTypeRanking) {
self.alfabeticBtn.enabled = NO;
}
if (self.listType == FriendsListTypeAlfabetic) {
self.alfabeticBtn.enabled = NO;
}
我会解决这个问题,然后如果您仍然遇到问题,请使用选择器方法更新您的问题。