hta*_*oya 15 iphone uitableview ios
我有一个带有自定义标题视图的表,无论何时,或者我为部分选择了什么值,我总是得到零值.我有另一张表有同样问题的表.
如果我打印[tableview subviews]的值,我可以看到标题视图,但我不知道为什么该方法不会返回任何内容.
我要做的是获取headerview中的activityIndicator并启动它或使用方法调用来停止它.
标题总是画好,但我无法获得参考.另外,调用headerViewForSection:不会调用委托方法,这是正常的吗?
footerViewForSection: 有同样的问题
一些代码:
- (UIView*) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
NSArray* objs = [[NSBundle mainBundle] loadNibNamed:@"iPadTableCells" owner:nil options:nil];
UIView* header = [objs objectAtIndex: 0];
UIActivityIndicatorView* activityIndicator = (UIActivityIndicatorView*) [header viewWithTag:5];
[activityIndicator startAnimating]
return header;
}
Run Code Online (Sandbox Code Playgroud)
从任何方法:
UIView* headerView = [tableview headerViewForSection: section]; //returns nil
if (headerView) {
UIActivityIndicatorView* activityIndicator = (UIActivityIndicatorView*)[headerView viewWithTag: 5];
[activityIndicator stopAnimating];
}
Run Code Online (Sandbox Code Playgroud)
Aar*_*ger 15
来自文档:
要使表视图知道页眉或页脚视图,您需要注册它.您可以使用
registerNib:forHeaderFooterViewReuseIdentifier:或registerClass:forHeaderFooterViewReuseIdentifier:方法执行此操作UITableView.
(Swift等价物是 register(_:forHeaderFooterViewReuseIdentifier:).)
因此,您需要注册nib,然后使用重用标识符来获取它,而不是直接从应用程序包中提取它,这就是您现在正在做的事情.
...如果你想使用这个headerViewForSection方法.
或者,您可以检查是否继续在viewForHeaderInSection方法内旋转,然后发送只是调用:
[self.tableView beginUpdates];
[self.tableView endUpdates];
Run Code Online (Sandbox Code Playgroud)
刷新节标题.
(请注意,这种替代方法会破坏并重新创建整个视图,因此如果您有一个包含大量数据的大表,那么它可能效率不高.)
自问这个问题以来已经有一段时间了,最近我遇到了类似的问题并且在这里问了我自己的问题: UITableView -headerViewForSection返回(null)
我相信我有答案.
UITableViewHeaderFooterView子类并命名它CustomHeaderViewiPadTableCells在这里命名)CustomHeaderView@property (strong, nonatomic) IBOutlet UIActivityIndicatorView *activityIndicator;使用以下代码:
- (UIView*) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
static NSString *HeaderIdentifier = @"header";
CustomHeaderView *header = [tableView dequeueReusableHeaderFooterViewWithIdentifier:HeaderIdentifier];
if(!header) {
NSArray* objs = [[NSBundle mainBundle] loadNibNamed:@"iPadTableCells"
owner:nil
options:nil];
header = [objs objectAtIndex: 0];
}
[header.activityIndicator startAnimating];
return header;
}
Run Code Online (Sandbox Code Playgroud)
然后你可以这样访问它:
CustomHeaderView *headerView = (CustomHeaderView*)[tableView headerViewForSection:section];
[headerView.activityIndicator stopAnimating];
Run Code Online (Sandbox Code Playgroud)
UITableViewHeaderFooterView您所需要做的就是为需要返回的标题视图创建一个实例
func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let sectionHeaderView = UITableViewHeaderFooterView()
//customize your view here
return sectionHeaderView
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12954 次 |
| 最近记录: |