我在iOS应用程序开发方面非常新,所以需要一点支持!! 我在 objectiveC 中使用了TableView来制作一个下拉列表来显示已成功制作的国家/地区的名称,但现在我希望同一个tableView与不同的状态列表一起使用,因为我有两个NSMutable数组一个用于“ countryList ”,另一个用于“ stateList ” 我是否可以使用相同的tableView但显示stateList数据。
NSMutableArray *countryArray;
NSMutableArray *stateArray;
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return countryArray.count ;
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
return 25;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell;
static NSString *idenfier = @"countryList";
cell = [tableView dequeueReusableCellWithIdentifier:idenfier forIndexPath:indexPath];
cell.selectionStyle = UITableViewCellSelectionStyleNone;
cell.textLabel.text = [countryArray objectAtIndex:indexPath.row];
return cell;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
self.registerCountry.text = [[[tableView cellForRowAtIndexPath:indexPath] textLabel] text];
// self.countryView.hidden = YES;
self.countryView.frame = CGRectMake(self.countryView.frame.origin.x, self.countryView.frame.origin.y, self.countryView.frame.size.width, 0);
if([_registerCountry.text isEqual:@""]){
[_dropDownState setEnabled:NO];
}
else{
[_dropDownState setEnabled:YES];
}
}
- (IBAction)dropDownCountry:(id)sender {
self.countryView.hidden = NO;
if (self.countryView.frame.size.height != 0) {
[UIView animateWithDuration:0.3 animations:^{
self.countryView.frame = CGRectMake(self.countryView.frame.origin.x, self.countryView.frame.origin.y, self.countryView.frame.size.width, 0);
} completion:^(BOOL finished) {
// self.dropDownImageView.highlighted = NO;
}];
}
else {
[UIView animateWithDuration:0.3 animations:^{
self.countryView.frame = CGRectMake(10, 404, 302, 100);
} completion:^(BOOL finished) {
// self.dropDownImageView.highlighted = YES;
}];
}
}
- (IBAction)dropDownState:(id)sender {
}
答案 0 :(得分:1)
@implementation RootViewController
@synthesize btnState,btnCountry, stateArray,countryArray,tempArray;
@synthesize tempTable;
- (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;
}
- (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
此处.m代码
<div>
@Html.Sitecore().Placeholder("phForm")
</div>
答案 1 :(得分:0)
- (NSInteger)tableView:(UITableView *)tableView
numberOfRowsInSection:(NSInteger)section {
return stateList.count
//OR
return countryList.count
}
- (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath {
//Load cell with the array[indexPath.row] you want
}
答案 2 :(得分:0)
在TableViewController中定义枚举
your_index
当前视图控制器设置要加载的列表类型
typedef NS_ENUM(NSInteger, ListViewType)
{
CountryList,
StateList
};
@interface TableViewController : UITableViewController
@property (nonatomic, weak) ListViewType listViewType;
@end
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"reuseIdentifier" forIndexPath:indexPath];
// Configure the cell...
switch (self.listViewType)
{
case CountryList:
//Load countryList array
break;
case StateList:
//load stateList array
break;
default:
break;
}
return cell;
}
答案 3 :(得分:0)
是的,可以只输入isCountry TableViewController * tableViewController = [[TableViewController alloc] initWithNibName:@"TableViewController" bundle:nil];
tableViewController.listViewType = CountryList; //Set depends on the need (CountryList/ StateList)
tableViewController.modalPresentationStyle = UIModalPresentationFormSheet;
tableViewController.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
[self presentViewController:tableViewController animated:YES completion:nil];
类型并检入表格视图委托&amp;数据源。当您想要更改tableView值时,只需更改BOOL
和isCountry
reload
的值。
答案 4 :(得分:0)
是 ,只需使用一个BOOL
变量来区分 countryList 和 stateList 下拉列表
选择BOOL isCountyDropDownClick;
如果有任何一个选项,请点击相应设置BOOL
并Reload TableView
。
赞,如果单击 countryList 而不是将BOOL
设置为YES
,Reload table
则将BOOL
设置为NO
。< / p>
在numberOfRowsInSection
和cellForRowAtIndexPath
根据BOOL
值使用数据源数组。
例如,
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
if (isCountyDropDownClick)
{
return CountryListArray.count;
}
else{
return StateListArray.count;
}
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
if (isCountyDropDownClick)
{
//Use CountryListArray
}
else{
//Use StateListArray
}
.....
}
这可以根据您的要求给出一些想法和修改。
答案 5 :(得分:0)
您可以使用UITableView部分,这样您的国家/地区列表就可以成为您的部分,当您关闭部分(国家/地区)列表时,您的状态可能是您的行,该部分中的行可能为0,当您点击并打开时可以填充实际的行列表。
@interface States : NSObject
@property(nonatomic, strong) NSString *name;
@end
@interface Countries : NSObject
@property(nonatomic, strong) NSMutableArray<States *> *states;
@end
@interface ViewController () <UITableViewDataSource>
@property(nonatomic,strong) NSMutableArray<Countries *> *countries;
@end
@implementation ViewController
-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
return self.countries.count;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
return [self.countries objectAtIndex:section].states.count;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
// return your configured cell here
}
@end
在上面的代码中,我创建了两个类,一个用于国家,另一个用于状态以正确映射表,希望这有帮助。
答案 6 :(得分:0)