使用一个TableViewController类创建两个tableview列表

时间:2011-12-15 07:37:20

标签: iphone objective-c xcode uitableview

我想做一个示例应用程序,在视图中我有两个按钮,一个是COUNTRY,另一个是STATE。 当我点击一个国家/地区按钮时,国家/地区列表应该出现在像弹出窗口一样的tableview类中,当我点击状态按钮时,状态列表应该出现在像弹出窗口一样的表视图中,那么我该怎样才能建议使用示例代码。

注意:我应该只为国家和州数据列表使用一个TableViewcontroller类。

5 个答案:

答案 0 :(得分:2)

以下是代码:

RootViewController.h

@interface RootViewController : UIViewController {

UIButton *btnCountry;
UIButton *btnState;

NSMutableArray *tempArray;
NSMutableArray *countryArray;
NSMutableArray *stateArray;

IBOutlet UITableView *tempTable;
}

 @property (nonatomic,retain) UIButton *btnCountry;
 @property (nonatomic,retain) UIButton *btnState;
 @property (nonatomic,retain) NSMutableArray *countryArray;
 @property (nonatomic,retain) NSMutableArray *stateArray;
@property (nonatomic,retain) NSMutableArray *tempArray;
@property (nonatomic,retain) UITableView *tempTable;


- (IBAction) showState:(id)sender;
- (IBAction) showCountry:(id)sender;

@end

RootViewController.m

@implementation RootViewController

@synthesize btnState,btnCountry, stateArray,countryArray,tempArray;
@synthesize tempTable;

#pragma mark -
#pragma mark View lifecycle


- (void)viewDidLoad {

[super viewDidLoad];

tempTable.hidden = YES;

countryArray = [[NSMutableArray alloc]initWithObjects:@"India",@"Pakistan",@"USA",nil];
stateArray = [[NSMutableArray alloc]initWithObjects:@"Gujarat",@"Maharashtra", @"Karnataka",nil];
tempArray = [[NSMutableArray alloc]init];

}



- (IBAction) showCountry:(id)sender
{
btnCountry = (UIButton *)sender;
tempArray = countryArray;
[tempTable reloadData];
if([btnCountry isSelected])
{
    tempTable.hidden = YES;
    btnCountry.selected = NO;
}
else
{
    tempTable.hidden = NO;
    btnCountry.selected = YES;
}
}


- (IBAction) showState:(id)sender
{
btnState = (UIButton *)sender;
tempArray = stateArray;
[tempTable reloadData];

if([btnState isSelected])
{
    tempTable.hidden = YES;
    btnState.selected = NO;
}
else
{
    tempTable.hidden = NO;
    btnState.selected = YES;
}
}

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

return 1;
}


// Customize the number of rows in the table view.
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section      {

return [tempArray count];
 }


// Customize the appearance of table view cells.
- (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];
}

cell.textLabel.text = [tempArray objectAtIndex:indexPath.row];

return cell;
}


@end

答案 1 :(得分:1)

问题不够清楚,你尝试了什么? .. 但是,你可以使用UIPopOverController 看到 THIS LINK

或者只是一个静态UiTableView在同一个Nib文件中,当你不需要它时隐藏它。

答案 2 :(得分:1)

你可以使用One Tableview:这里我只附加逻辑。

在viewdidload中,

将有两个数组countryArray和stateArray。

将会有第三个数组:tempArray

有两个按钮:button1和button2 tableview.hidden = YES;

button1Action中的

将countryArray分配给tempArray以及[tableview reload]

button2Action中的

将stateArray分配给tempArray以及[tableview reload]

然后在tableview委托中,

  • (NSInteger)tableView:(UITableView *)表numberOfRowsInSection:(NSInteger)部分 {

    return [tempArray count];

}

然后在

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

使用tempArray .......

}

试试这个...如果你想要更详细的请告知......

答案 3 :(得分:0)

拿两个tableViews和两个Buttons。

将每个桌面视图放在每个按钮下方。

最初,两个TableView都被隐藏了。单击Button时,显示带有动画的TableView。

答案 4 :(得分:0)

我认为你应该只使用一个TableViewController但使用不同的数据源。