如何更改不同分段控制索引

时间:2016-03-03 12:37:23

标签: ios objective-c uitableview uisegmentedcontrol

我正在使用带有标题,电话和电子邮件的分段控件。我从地址簿中获取联系人详细信息并将其存储为字典数组。每个字典都带有键"名称","电子邮件","图像","电话"。我的要求是在点击电子邮件时仅显示tableview中的电子邮件联系人,并在段控件上点击电话按钮时显示与电话的联系人。请帮我实现这个目标。

2 个答案:

答案 0 :(得分:1)

我们可以实现这多种方式。在这里我使用Tag概念,例如

<强>步骤1

在您的ViewDidLoad中设置为tableview.tag=1;

<强>步骤-2

- (IBAction)segBtnTapped:(id)sender {

  if(yourSegmentControl.selectedSegmentIndex==0){
    // email
    tableview.tag=1;
 }
 else if(segControlForColor.selectedSegmentIndex==1){
   // phone
    tableview.tag=2;
 }
else{
    // titles
    tableview.tag=3;
 }
 [yourtableView reloadData];
}

<强>步骤-3

无需更改部分中的行数或只需在CellForRowatIndexpathdidSelectrowatIndexpath中调用的任何内容,例如

 -(UITableViewCell *)tableView:(UITableView *)tableView  cellForRowAtIndexPath:(NSIndexPath *)indexPath
{


UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

   if(tableview.tag == 1)
  {
      //code for email  
      cell.textLabel.text =[[yourarrayName objectAtIndex:indexPath.row]objectForKey:@"email"];

  }

  else if(tableview.tag == 2)
  {
      //code for phone

cell.textLabel.text =[[yourarrayName objectAtIndex:indexPath.row]objectForKey:@"phone"];

  }

  else if(tableview.tag == 3)
  {
      //code for titles 
         cell.textLabel.text =[[yourarrayName objectAtIndex:indexPath.row]objectForKey:@"titles"];
  }
  return cell;
}

 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
 if(tableview.tag == 1)
  {
      //code for email  
        NSLog(@"email==%@",[[yourarrayName objectAtIndex:indexPath.row]objectForKey:@"email"]);

  }

  else if(tableview.tag == 2)
  {
      //code for phone

    NSLog(@"phone==%@",[[yourarrayName objectAtIndex:indexPath.row]objectForKey:@"phone"]);

  }

  else if(tableview.tag == 3)
  {

         NSLog(@"title==%@",[[yourarrayName objectAtIndex:indexPath.row]objectForKey:@"titles"]);
  }

}

答案 1 :(得分:0)

可以通过在下面的委托方法中检查segmentedControl索引状态来完成。

intent.putExtra("outputX", 80);
    intent.putExtra("outputY", 80);
    intent.putExtra("aspectX", 1);
    intent.putExtra("aspectY", 1);
    intent.putExtra("scale", true);
    intent.putExtra(MediaStore.EXTRA_SIZE_LIMIT, 20);

    intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
    startActivityForResult(intent, Utility.REQUEST_FOR_CAMERA);

当分段控制索引发生变化时,不要忘记重新加载表。