菜鸟教程小白 发表于 2022-12-13 14:18:43

ios - 具有行展开和折叠选项的表格 View 的最佳方法


                                            <p><p>我有包含表格 View 和搜索栏的 View 。当我开始搜索时,它应该搜索 tableview。下面是附图中tableview的示例数据:<a href="/image/XzWrH.png" rel="noreferrer noopener nofollow"><img src="/image/XzWrH.png" alt="enter image description here"/></a> </p>

<p>STUDENT 1、STUDENT 2 是表中的不同部分</p>

<p>假设我搜索“S”,那么结果应该如下所示,其中匹配的行应该是可见的,而不匹配的行应该被隐藏,并且“显示剩余”按钮应该是可见的。当我点击“显示剩余”按钮时,它应该显示同一部分的剩余行:</p>

<p> <a href="/image/0wXIM.png" rel="noreferrer noopener nofollow"><img src="/image/0wXIM.png" alt="enter image description here"/></a> </p>

<p>我如何实现这一点,如果可能,请提供上述场景的示例。</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>我已经为您的要求创建了代码,请找到下面的 url 下载代码并查看它。</p>

<p>链接:<a href="https://www.dropbox.com/s/22ijwgxybn98wyj/ExpandCollapse.zip?dl=0" rel="noreferrer noopener nofollow">https://www.dropbox.com/s/22ijwgxybn98wyj/ExpandCollapse.zip?dl=0</a> </p>

<blockquote>
<p>Environment : Xcode 8 and Objective-C</p>
</blockquote>

<p><strong>突出显示我编写的代码。</strong></p>

<p>我已经根据你的结构创建了student的NSObject,创建了两个(StudentListCell和ShowMoreCell)<code>UITableViewCell</code>用于显示student的记录和“Show Remaining button”记录。</p>

<p>我还拿了两个(arrStudentInfo, arrSearchInfo) <code>NSMutablebleArray</code> 来保存搜索记录和原始记录。</p>

<p>之后我在<code>ViewController.m</code>中初始化student的NSObject。请找到以下代码。</p>

<pre><code>- (void)setupData {

    self.arrStudentInfo = [ init];
    self.arrSearchInfo = [ init];

    StudentInfo *student_1 = [ init];
    student_1.name = @&#34;Sia S&#34;;
    student_1.style = @&#34;S&#34;;
    student_1.trend = @&#34;S&#34;;
    student_1.age = @&#34;60&#34;;
    student_1.locale = @&#34;Node&#34;;
    student_1.street = @&#34;BR&#34;;
    student_1.city = @&#34;JP&#34;;
    student_1.country = @&#34;US&#34;;
    student_1.isOpen = YES;
    student_1.isShowMore = NO;
    ;

    StudentInfo *student_2 = [ init];
    student_2.name = @&#34;Nitin&#34;;
    student_2.style = @&#34;N&#34;;
    student_2.trend = @&#34;N&#34;;
    student_2.age = @&#34;40&#34;;
    student_2.locale = @&#34;Node&#34;;
    student_2.street = @&#34;BR&#34;;
    student_2.city = @&#34;SP&#34;;
    student_2.country = @&#34;US&#34;;
    student_2.isOpen = YES;
    student_2.isShowMore = NO;
    ;
}
</code></pre>

<p>我已经创建了返回当前事件的方法,这意味着搜索记录或数组的原始记录。</p>

<pre><code>- (NSMutableArray *)getCurrentArray {

    if(self.isSearch)
      return self.arrSearchInfo;
    else
      return self.arrStudentInfo;
}
</code></pre>

<p>根据场景加载数据,</p>

<pre><code>- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    StudentInfo *studentInfo = ;

    if(indexPath.row == SHOW_MORE_INDEX &amp;&amp; studentInfo.isShowMore == NO) {

      static NSString *strCellIdentifier = @&#34;ShowMoreCell&#34;;
      ShowMoreCell *cell = ;
      cell.btnShowMore.tag = indexPath.section;
      ;

      return cell;
    }

    else {

      static NSString *strCellIdentifier = @&#34;StudentListCell&#34;;

      StudentListCell *cell = ;
      ;

      return cell;
    }
}
</code></pre>

<p>用于搜索学生姓名,</p>

<pre><code>- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar {

    ;
    self.isSearch = YES;

    NSPredicate *predicateStudent = &#39;%@&#39;&#34;,searchBar.text]];
    NSArray *arrGetSearch = ;

    if(self.arrSearchInfo.count)
      ;

    ;
    ;
}
</code></pre>

<p>如果用户单击 <code>UISearchbar</code> 上的“X”按钮,则再次加载原始记录。</p>

<pre><code>- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText {

    if( || searchText==nil) {

      ;
      self.isSearch = NO;
      ;
    }
}
</code></pre>

<p>希望这对你有用。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 具有行展开和折叠选项的表格 View 的最佳方法,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/40152516/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/40152516/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 具有行展开和折叠选项的表格 View 的最佳方法