-1

仅供参考 - 新手iOS开发人员在这里。

我当前的设置是一个UIViewController带有 UIView 的内部,然后是一个UITableView内部的UIVIew. 所以事情是这样的……

UIViewController --> UIView --> UITableView

这样做的原因是因为我用 tableview 包装了其他元素。将UIViewController动态内容加载到表格视图中。我有一个分段控件,我想用它来切换表格视图中的内容。

我读过一些东西[table reload][table beginUpdate]但不明白如何使用它。任何帮助都会很棒。

4

4 回答 4

2

您需要为此 UIControlEventValueChanged事件实现一个方法UISegmentedControl

[yourSegmentedControl addTarget:self action:@selector(segmentChanged:) forControlEvents:UIControlEventValueChanged];

并实现如下segmentChanged方法:

- (void)segmentChanged:(id)sender
{
   UISegmentedControl *mySegment = (UISegmentedControl *)sender;

   switch ([mySegment selectedSegmentIndex])
   {
       case 1:
           //load first contents
       break;
       case 2:
          //load second contents   
       break;
       default:
       break;
   }
   [self.yourTableView reloadData];
}
于 2013-01-21T04:17:38.150 回答
1

例如,

你的UIViewnamed*myView和你的UITableViewnamed *myTableView,你想重新加载的时间tableview,在你的UIViewController,你应该tableview像这样重新加载:

[self.myView.myTableView reload];

并确保tableview's delegatedataSourceDelegate设置正确。

于 2013-01-21T04:14:07.563 回答
1

好的,所以[table reloadData]将重新加载数据(因此,如果您更改数据并希望使用必要的数据更新表格,请调用此命令),但在您调用该命令后,请确保调用[table setNeedsDisplay]以刷新 UI。[table beginUpdates] 开始一系列插入、删除或选择接收器的行和部分的方法调用。您以[table endUpdates];

确保将表格视图的dataSource和设置delegate为 self,这可以通过 xib 和以编程方式完成,如下所示:

[table setDelegate: self];

或者

[table setDataSource: self];

如前所述:

调用此delegate方法UISegmentedControl

    - (void)segmentedControl:(UISegmentedControl*)segmentedControl didSelectIndex:(NSUInteger)selectedIndex
{
   if(selectedIndex == 0)
   {
     // Update the data
   }
   else if(selectedIndex == 1)
   {
     // Update the data
   }

   [table reloadData];
   [table setNeedsDisplay];
}
于 2013-01-21T04:18:29.820 回答
0

需要在 ViewController.h 文件中为 tableview 设置委托和数据源,例如

UITableViewDataSource,UITableViewDelegate。

在 ViewController.m 文件中实现委托和数据源方法

[tableview SetDelagate:self];

[tableview SetDatasource:self];

实现委托方法。

并使用重新加载表

[tableView reloadData];

方法。

于 2013-01-21T05:08:21.900 回答