如何将tableview数据重新加载到另一个数组?

时间:2015-09-04 06:36:26

标签: ios objective-c arrays uitableview

我正在尝试使用双table view值创建单个NSMutableArray。现在我保持UISegmentcontrol第一个按钮点击以加载第一个NSMutableArray数据。单击第二个按钮以加载第二个NSMutableArray数据值(单击第二个按钮后,第一个数据不应显示)。

NSMUtableArray *firstarray = [First values];
NSMUtableArray *secondarray = [second values];


-(void)segmentedControlValueDidChange:(UISegmentedControl *)segment
{
    switch (segment.selectedSegmentIndex) {
        case 0:{
            //action for the first button (Current)
           //want to load first array data into table
            break;}
        case 1:{
            //action for the first button (Current)
           //want to load second array data into table
           break;}
    }
}

4 个答案:

答案 0 :(得分:4)

创建1个数组来保存表的数据,因此您不必在UITableView的每个委托方法中检查(使用if,...):

NSMutableArray * arrTableData;

-(void)segmentedControlValueDidChange:(UISegmentedControl *)segment
{
    switch (segment.selectedSegmentIndex) {
        case 0:{
            arrTableData = firstarray;
           [tableView reloadData];

            break;}
        case 1:{
             arrTableData = secondarray;
             [tableView reloadData];

           break;}
    }
}

arrTableData用于UITableView的代理人:numberOfRowsInSectioncellAtIndex ......

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{

   return arrTableData.count;

}

答案 1 :(得分:2)

您可以使用枚举来检查您按下的按钮。对于按钮1,将枚举值设置为1,对于按钮2,将枚举值设置为2.在表视图中,委托方法可以检查当前选定的枚举并返回适当的值。

例如:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
NSInteger count = 0;


if(m_choice == 1)
    count = [firstarray count];
else if(m_choice == 2)
    count = [secondarray count];

return count;}

对其他表格视图方法也这样做。

答案 2 :(得分:1)

以下列方式实施UITableViewDelegate

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

   if (mySegmentContorll.selectedSegmentIndex == 0) {
       // Draw Cell content with data taken from first array, data = firstarray[indexPath]
   } else if (mySegmentContorll.selectedSegmentIndex == 1) {
      // Draw Cell content with data taken from second array, data = secondarray[indexPath]
   }

}

当分段控件更改时,也请调用[tableView reloadData];

答案 3 :(得分:1)

创建一个bool变量,例如isLoadFirst 然后在你的以下代码中

-(void)segmentedControlValueDidChange:(UISegmentedControl *)segment
{
switch (segment.selectedSegmentIndex) {
    case 0:{
         isFirstLoad  = YES;
         [yourTableView reloadData];
        //action for the first button (Current)
       //want to load first array data into table
        break;}
    case 1:{
        //action for the first button (Current)
       //want to load second array data into table
        isFirstLoad  = NO;
         [yourTableView reloadData];
       break;}
}
}

现在在你的

 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
     if (isFirstLoad)
   return firstArrayCount;
   else 
   return secondArrayCount
}

同样检查

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