0

我有一个 tableViewController,我使用 Interface Builder 插入了一个有两个段的分段控制器。由于默认情况下始终选择第一段,因此在显示与第一段对应的表格视图时我没有遇到任何问题。但是,当我单击第二个段时,我想显示另一个 tableView。

问题来了。我在单击第二个段时调用 newTableViewController 类。因此,这种观点正在被推动。请建议我在单击段时将这两个 tableViews 放在主 tableView 中的方法。

我使用 switch case 在段之间切换。

这是代码的相关部分:此方法在 FirstTableViewController 中,因为默认情况下选择了第一段。

-(IBAction) segmentedControlChanged
{
     switch(segmentedControl.selectedSegmnentIndex)
     {
        case 0:
         //default first index selected. 
         [tableView setHidden:NO];
         break;
         case 1:
         NewViewController *controller=[[NewViewController alloc] initWithNibName:@"NewViewController" bundle:nil];
         self.navigationController pushViewController:controller animated:YES];
         [controller release];
         break;
         default:
         break;
     }
}
4

6 回答 6

2

将下面的代码作为 案例 1 的第一行:

if(self.tblView.isHidden==NO)
    self.tblView.hidden=YES;

就像,,,

case 1:
         if(self.tblView.isHidden==NO)
              self.tblView.hidden=YES;

         NewViewController *controller=[[NewViewController alloc] initWithNibName:@"NewViewController" bundle:nil];
         self.navigationController pushViewController:controller animated:YES];
         [controller release];
         break;
于 2012-10-08T09:24:15.480 回答
1

您应该在同一个类中创建两个或更多UITableViews,或者更好地为单个创建不同的数组UITableView,然后使用条件将数组添加到同一个表中。我希望你明白我的意思。你不应该使用不同的类方法,除非它真的很重要。

此外,这将为您节省导入不同UITableViews类的麻烦,从而减少您的内存管理。

于 2012-10-08T09:16:14.830 回答
1

To add Two tableview in same class, you have to use Tag for UITableView. Set Tag and upload data as per selected Segment.

I think This is having same issue.

Edit. There are multiple options

  1. If table structure/ look is same, you can use two array as input and can use.
  2. You can use Two different UITableView with conditions or use Tag for Table View
于 2012-10-08T09:18:52.117 回答
1

1.Create one view controller say: MainViewController inherits UIViewController(not UITableViewController).

2.In MainViewController create two tableView say mTableView1 and mTableView2 and assign tag to both the tableview say 100 and 101 respectively.

3.Create one variable which will store the value based on segment selected say if first segment is selected then var = 100 and so.

4.In tableview datasource and delegate methods use this var to find out which segment is selected, and display respective tableview.

And if your tableview structure and functionality is same then you can even use single tableview and pass data to display in tableview depending upon segment selected.

Code: In viewDidLoad add following code:

m_TableView1 = [[UITableView alloc] initWithFrame:yourFrame];
m_TableView1.tag = 100;
    m_TableView1.dataSource = self;
    m_TableView1.delegate = self;
    [self.view addSubview: m_TableView1];
    [m_TableView1 release];



m_TableView2 = [[UITableView alloc] initWithFrame:yourFrame];
m_TableView2.tag = 101;
    m_TableView2.dataSource = self;
    m_TableView2.delegate = self;
    [self.view addSubview: m_TableView2];
    [m_TableView2 release];

Then in datasource and delegate methods use tag and provide appropriate data as follows:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
     static NSString *CellIdentifier = @"Cell";
            UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
            if (cell == nil) {
                cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];

            }
    if(tableView.tag == 100)
       cell.titleLabel.text = [NSString stringWithFormat:"First table, cell%d",indexPath.row];
   else
     cell.titleLabel.text = [NSString stringWithFormat:"Second table, cell%d",indexPath.row];

}
于 2012-10-08T09:19:17.157 回答
0

改变这种方式:

1>默认选择一个Tableview和Segmentation Control,第一个段被选中,First Table view是front View,并将其userinteraction设置为false

2>选择第二段时隐藏第一个tableview并将旧的tableview发送回旧表视图,并使其可见设置其用户互动true true true

于 2012-10-08T11:14:11.833 回答
0
-(IBAction) segmentedControlChanged
{
     switch(segmentedControl.selectedSegmnentIndex)
     {
        case 0:
         //default first index selected. 
         [tableView setHidden:NO];
      if([self.view viewWithTag:9999]){
      [[self.view viewWithTag:9999]removeFromSuperView]; //remove other table
     }
}
         break;
         case 1:
         NewViewController *controller=[[NewViewController alloc] initWithNibName:@"NewViewController" bundle:nil];
         [self.view addSubView:controller.view];
        [controller.view setTag:9999];
         break;
         default:
         break;
     }
}

    enter code here
于 2012-10-10T09:36:02.860 回答