Xcode TableView一次显示一个不同的数组问题

时间:2011-09-03 00:16:32

标签: iphone xcode

所以我知道,如果你们不喜欢我的问题,你会投票让我失望并降低我的声誉:(但我需要学习,找不到答案,所以在这里我再次冒着声誉。 现在到了这一点。我所要做的就是一个带有两个按钮的视图和按钮下的一个表视图,这个表视图需要显示一个不同的数组,这取决于女巫按钮被点击,换句话说,我想要它做的就是我点击button1显示array1,如果我点击button2显示array2,简单!但我无法让它发挥作用。 以下是我的代码示例:

- (void)viewDidLoad
{

array1 = [[NSArray arrayWithObjects:
               @"A",
               @"B",
               @"c",
               @"D", nil] retain];

array2 = [[NSArray arrayWithObjects:
               @"1",
               @"2",
               @"3",
               @"4", nil] retain];
}

- (IBAction)btnPeriodicos:(id)sender {
displayArray = 1;
}

- (IBAction)btnRadios:(id)sender {
displayArray = 2;
}


- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
 if (displayArray == 1) {
 return [array1 count];
 }
 if (displayArray == 2) {
 return [array2 count];
 }
 [self.tableView reloadData];
}

- (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];
}

// Configure the cell.
cell.textLabel.textAlignment = UITextAlignmentCenter;
cell.textLabel.textColor = [UIColor blackColor];
if (menuNumberInt == 1) {
    cell.textLabel.text = [[periodicoArray objectAtIndex:indexPath.row] retain];
}
if (menuNumberInt == 2) {
    cell.textLabel.text = [[radioArray objectAtIndex:indexPath.row] retain];
}

return cell; 
 }

如果我将numberOfRowsInSection的[array1 count]和cell.textLabel.text = [[periodicoArray objectAtIndex:indexPath.row] retain]替换为if else语句;应用程序加载表填充该数组,所以我猜表可以工作,但如何让我的按钮更改表格单元格? 任何帮助是极大的赞赏。 感谢

1 个答案:

答案 0 :(得分:1)

您可以拥有NSArray * currentArray的iVar变量。在viewDidLoad中,您可以定义两个数组(如您当前所做),但随后将currentArray分配给array1。

然后,更改所有tableView回调以操作currentArray并删除if(displayArray == x)检查。

在(IBAction)按钮处理程序中,将currentArray分配给相应的数组并调用[tableView reloadData]。这将清除表并触发所有tableView回调再次发生。由于currentArray已更改,所有回调都将从相应的数组中提取数据。

希望有所帮助。