菜鸟教程小白 发表于 2022-12-12 22:31:43

ios - 如何在一个 uitableview 中为不同的单元格样式分配不同的标识符?


                                            <p><p>我是 ios 开发的大一新生,我想在一个 uitableview 的不同部分实现不同的单元格样式。我的表格 View 有两个部分,每个部分有三行。 </p>

<p>我知道不同的单元格应该有不同的重用标识符来检索重用单元格,但是当我编译我的应用程序时,控制台总是显示以下信息:</p>

<pre><code>2012-08-26 14:04:45.571 Defferent Cell Styles *** Terminating app due to uncaught exception &#39;NSInternalInconsistencyException&#39;, reason: &#39;UITableView dataSource must return a cell from tableView:cellForRowAtIndexPath:&#39;
</code></pre>

<p>任何帮助将不胜感激,我的代码如下:</p>

<pre><code>@end

@implement LGViewController

@synthesize data = _data;
@synthesize list = _list;

- (void)viewDidLoad
{
    ;
    NSArray *dataArray = [ initWithObjects:@&#34;fwfwf&#34;, @&#34;ffgfg&#34;, @&#34;sfsfsf&#34;, nil];
    NSArray *listArray = [ initWithObjects:@&#34;fdff&#34;, @&#34;ffdfsw&#34;, @&#34;eergerg&#34;, nil];
    self.data = dataArray;
    self.list = listArray;
    self.navigationItem.title = @&#34;Data&#34;;
}

#pragma mark - DataSource

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return 2;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    if (section == 0) {
      return ;
    }
    else if (section == 1){
      return ;
    }
    return section;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *accessoryIdentifier = @&#34;Cells&#34;;
    static NSString *switchIdenfier = @&#34;Cells&#34;;
    static NSString *sliderIdentifier = @&#34;Cells&#34;;

    UITableViewCell *cell;   
    if ((indexPath.section == 0 &amp;&amp; indexPath.section == 1) &amp;&amp; indexPath.row == 0)
    {
      cell = ;
      if (cell == nil) {
            cell = [ initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:accessoryIdentifier];
      }
      cell.selectionStyle = UITableViewCellSelectionStyleNone;
      cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;


    }
    else if ((indexPath.section == 0 &amp;&amp; indexPath.section ==1) &amp;&amp; indexPath.row == 1)
    {
      cell = ;
      if (cell == nil) {
            cell = [ initWithStyle:UITableViewCellStyleDefault reuseIdentifier:switchIdenfier];
      }
      cell.selectionStyle = UITableViewCellSelectionStyleNone;
      UISwitch *soundSwitch = [ initWithFrame:CGRectZero];
      ;
      ;
      cell.accessoryView = soundSwitch;


    }
    else if ((indexPath.section ==0 &amp;&amp; indexPath.section == 1) &amp;&amp; indexPath.row == 2)
    {
      cell = ;
      if (cell == nil) {
            cell = [ initWithStyle:UITableViewCellStyleDefault reuseIdentifier:sliderIdentifier];
      }
      cell.selectionStyle = UITableViewCellSelectionStyleNone;
      UISlider *slider = [ initWithFrame:CGRectMake(0, 0, 60, 20)];
      cell.accessoryView = slider;


    }

    return cell;   
}
</code></pre></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>您永远不会返回单元格,因为 indexPath.section 永远不能同时为 0 和 1:</p>

<pre><code>else if ((indexPath.section ==0 &amp;&amp; indexPath.section == 1) &amp;&amp; indexPath.row == 2)
</code></pre>

<p>应该是</p>

<pre><code>else if ((indexPath.section ==0 || indexPath.section == 1) &amp;&amp; indexPath.row == 2)
</code></pre>

<p>在所有情况下。 <code>||</code> 是 OR,<code>&&</code> 是 AND。 </p>

<p>虽然真的,你可以放弃检查部分,因为它总是 0 或 1。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 如何在一个 uitableview 中为不同的单元格样式分配不同的标识符?,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/12127974/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/12127974/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 如何在一个 uitableview 中为不同的单元格样式分配不同的标识符?