菜鸟教程小白 发表于 2022-12-13 09:33:04

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&gt;=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 = @&#34;Cell&#34;;
    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[@&#34;Top 3&#34;][@&#34;Title&#34;];
    cell.textLabel.font = ;

    // price of the item
    cell.detailTextLabel.text = [@&#34;Top 3&#34;][@&#34;Price&#34;]];
    cell.detailTextLabel.textColor = ;

    // image of the item
    NSData *imageData = [@&#34;Top 3&#34;][@&#34;Image URL&#34;]]];
    [ 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&lt;UIExpandingTableViewCell&gt; *)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]
查看完整版本: ios - 如何创建可扩展的 UITableView 部分?