我正在尝试使用双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;}
}
}
答案 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
的代理人:numberOfRowsInSection
,cellAtIndex
......
- (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