0

对我来说有点困惑,但我确信我犯了一个很小的错误。请指导我正确的方向。情况是这样的。

我有一个有 2 个段的 OneViewController。Segment1 的代码已经在 OneViewController 中编写(不是 tableviewController,但我想显示一个 tableView,因此手动为其编写代码),因为默认情况下选择了 Segment1。当我单击段 2 时,我必须显示另一个 tableViewController(为此我创建了一个名为 TwoTableViewController 的类)。而且我希望两个 tableViews 都应该出现在同一个视图中(不推送新视图)。最重要的是分段控件不应该消失。

我还附上了代码的相关部分。我知道我以前也问过类似的问题,但这真的很混乱,所以我想重新开始。希望我被原谅!:)

这是代码:

 -(void)viewDidLoad
{
  //has the elements I want to display when I click on segment 1. since it is already selected , I have written it here
}
    -(IBAction) segmentedControlChanged
    {
         switch(segmentedControl.selectedSegmnentIndex)
         {
            case 0:
             //default first index selected. 
             [tableView setHidden:NO];
             if(self.view viewWithTag==9999]{
              [[self.view viewWithTag:9999]removeFromSuperView]; 
                  }
              break;

             case 1:
             NewTableViewController *controller=[[NewTableViewController alloc] initWithNibName:@"NewTableViewController" bundle:nil];
             [controller.view setTag:9999];         
             break;
             default:
             break;
         }
    }

NewTableViewController 具有单独的方法,并且数据源和委托在 IB 中设置为 TableView。我要做的就是在单击 Segment2 时调用这个 NewTableViewController。

4

4 回答 4

0
//view1,view2 are uiviews not a view controllers-(IBAction) segmentedControlChanged

-(void)segcontrol
{
    if(segments.selectedSegmentIndex==0)
    {
      self.view=view1;

    }
    else 
    {
        self.view=view2;
    }

}
于 2012-10-10T12:38:17.523 回答
0

Case 1:在您的中添加以下代码-(IBAction) segmentedControlChanged

[self.view addSubview:self.YourTableView];
于 2012-10-10T12:25:48.357 回答
0

最好在同一类中填充和编写 UITableViews 的代码(在OneViewController中)

您可以通过以下方式识别当前的tableView

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{

     int numberOfSections = 0;

     if(tableView == yourTableViewOne){

           numberOfSections =  5;
       }

     else if (tableView == yourTableViewTwo){

          numberOfSections = return 3;
     }

  return numberOfSections;
}

在所有其他 UITableView 委托中使用相同的检查。

于 2012-10-10T12:07:20.023 回答
0

您可以通过将第二个视图控制器推送到导航控制器上或通过模态呈现或使用标签栏控制器而不是分段控制来显示第二个视图控制器。

我的建议是

声明一个继承 UIViewController 的类。在底部添加一个segmentedControl,在其上方添加一个uitableview。

每当用户单击一个段时,使用相应的数据重新加载 tableview。这样可以节省内存。而且您无需承担删除/添加/隐藏视图的痛苦..

于 2012-10-10T13:17:20.847 回答