ios - 如何创建可扩展的 UITableView 部分?
<p><p>目前,我的每个 <code>UITableView</code> 部分都包含 10 行。我想要的是每个部分初始化这 10 行,但只显示 3。如果用户点击“显示更多”按钮,那么将显示所有 10。我考虑过在隐藏部分使用类似的东西来做到这一点:</p>
<pre><code>- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
float heightForRow = 65;
if(cell.tag>=3)
return 0;
else
return heightForRow;
}
</code></pre>
<p>这是为了隐藏除前 3 行之外的所有行。问题是我收到一条错误消息,指出 <code>use of undeclared identifier 'cell'</code>。我像这样在 <code>cellForRowAtIndexPath</code> 中初始化 <code>cell</code>:</p>
<pre><code>- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
// Initialize cell
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = ;
if (!cell) {
// if no cell could be dequeued create a new one
cell = [ initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
}
// No cell seperators = clean design
tableView.separatorColor = ;
// title of the item
cell.textLabel.text = _matchCenterArray[@"Top 3"][@"Title"];
cell.textLabel.font = ;
// price of the item
cell.detailTextLabel.text = [@"Top 3"][@"Price"]];
cell.detailTextLabel.textColor = ;
// image of the item
NSData *imageData = [@"Top 3"][@"Image URL"]]];
[ setImage:];
return cell;
}
</code></pre>
<p>如何使 <code>cell</code> 在 <code>heightForRowAtIndexPath</code> 中可访问?</p></p>
<br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
<p><p>如果您可以在这里使用 3rd Party Libraries,那么您就可以了:</p>
<p> <a href="https://github.com/OliverLetterer/SLExpandableTableView" rel="noreferrer noopener nofollow">SLExpandableTableView</a> </p>
<h2>实现步骤</h2>
<p>在 <code>UITableViewController</code></p> 中加载 <strong>SLExpandableTableView</strong>
<pre><code>- (void)loadView
{
self.tableView = [ initWithFrame:CGRectZero style:UITableViewStylePlain];
}
</code></pre>
<p>实现 <strong>SLExpandableTableViewDatasource</strong> 协议(protocol)</p>
<pre><code>- (BOOL)tableView:(SLExpandableTableView *)tableView canExpandSection:(NSInteger)section
{
// return YES, if the section should be expandable
}
- (BOOL)tableView:(SLExpandableTableView *)tableView needsToDownloadDataForExpandableSection:(NSInteger)section
{
// return YES, if you need to download data to expand this section. tableView will call tableView:downloadDataForExpandableSection: for this section
}
- (UITableViewCell<UIExpandingTableViewCell> *)tableView:(SLExpandableTableView *)tableView expandingCellForSection:(NSInteger)section
{
// this cell will be displayed at IndexPath with section: section and row 0
}
</code></pre>
<p>实现 <strong>SLExpandableTableViewDelegate</strong> 协议(protocol)</p>
<pre><code>- (void)tableView:(SLExpandableTableView *)tableView downloadDataForExpandableSection:(NSInteger)section
{
// download your data here
// call ; if download was successful
// call ; if your download was NOT successful
}
- (void)tableView:(SLExpandableTableView *)tableView didExpandSection:(NSUInteger)section animated:(BOOL)animated
{
//...
}
- (void)tableView:(SLExpandableTableView *)tableView didCollapseSection:(NSUInteger)section animated:(BOOL)animated
{
//...
}
</code></pre></p>
<p style="font-size: 20px;">关于ios - 如何创建可扩展的 UITableView 部分?,我们在Stack Overflow上找到一个类似的问题:
<a href="https://stackoverflow.com/questions/26186109/" rel="noreferrer noopener nofollow" style="color: red;">
https://stackoverflow.com/questions/26186109/
</a>
</p>
页:
[1]