Создать список двух таблиц, используя один класс TableViewController - PullRequest
1 голос
/ 15 декабря 2011

Я хочу создать пример приложения, в котором в представлении у меня есть две кнопки, одна из которых СТРАНА, а другая - СОСТОЯНИЕ. когда я нажимаю на кнопку страны, список стран должен отображаться в классе табличного представления как всплывающее окно, а когда я нажимаю на кнопку состояния, список состояний должен отображаться в виде табличного представления как всплывающее окно. Так как я могу это сделать, предложите пример кода.

ПРИМЕЧАНИЕ. Я должен использовать только один класс TableViewcontroller для списка данных как по стране, так и по состоянию.

Ответы [ 5 ]

2 голосов
/ 15 декабря 2011

Вот код:

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 голос
/ 15 декабря 2011

Для этого вы можете использовать One Tableview: здесь я прилагаю только логику.

В viewdidload,

Будет два массива countryArray и stateArray.

Будет третий массив: tempArray

есть две кнопки: button1 и button2 tableview.hidden = ДА;

в button1Action назначьте countryArray для tempArray, а также [перезагрузка табличного представления]

в button2Action назначить stateArray для tempArray, а также [перезагрузка табличного представления]

затем в табличном представлении,

  • (NSInteger) tableView: (UITableView *) таблица numberOfRowsInSection: (NSInteger) раздел {

    return [счетчик временных массивов];

}

, а затем в

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

использовать tempArray .......

}

попробуйте это ... и если вы хотите более подробную информацию, пожалуйста, сообщите ....

1 голос
/ 15 декабря 2011

Вопрос недостаточно ясен ,, что вы пробовали?Но вы можете использовать UIPopOverController для этого, см. ЭТО ССЫЛКА

Или просто статический UiTableView в том же файле Nib, сделайте его скрытым, когда он вам не нужен.*

0 голосов
/ 15 декабря 2011

Я думаю, что вы должны использовать только один TableViewController, но с разными источниками данных.

0 голосов
/ 15 декабря 2011

Возьмите два вида таблицы и две кнопки.

Поместите каждую таблицу под каждой кнопкой.

Первоначально оба TableViews скрыты. Когда кнопка нажата, покажите TableView с анимацией.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...