提前致谢。
目前正在开发一个大学应用程序,该应用程序由一个包含两个视图控制器的选项卡栏控制器组成,第一个是无关紧要的,第二个是导航控制器。该导航控制器由一个 tableView 组成,其中包含用户可以选择的各种校园建筑(来自 NSArray)。导航控制器还包含另一个名为 BuildingFloorsViewController 的视图控制器,它本身有另一个表,其中包含所选建筑物的 NSArray 中的各个楼层,称为楼层(一楼、一楼等)。
所以想法是相同的 NSArray(楼层)将根据选择的建筑物重新填充。这是一个坏主意吗?
目前发生的情况是表格采用了前一个表格中的哪一行被选择的形式——这非常有意义,因为表格是在那里启动的。因此,例如,如果我首先选择 London Road 行,它将创建具有 4 个值(+ nil)的数组,但如果我首先选择 Faraday Ring 行,它将创建具有 3 个值(+ nil)的数组。
那么,如何为每个 if 语句条件提供一组不同的值呢?我已经研究过使用可变数组并只是调整值但是还有另一种方法吗?谢谢。
这是 BuildingFloorsViewController.h 的代码
#import <UIKit/UIKit.h>
@interface BuildingFloorsViewController : UITableViewController{
NSArray *floors;
NSArray *londonRoadFloors;
}
@property (nonatomic, retain) NSArray *floors;
@property (nonatomic, retain) NSArray *londonRoadFloors;
@end
和 BuildingFloorsViewController.m
#import "BuildingFloorsViewController.h"
@interface BuildingFloorsViewController ()
@end
@implementation BuildingFloorsViewController
@synthesize floors;
@synthesize londonRoadFloors;
-(void)viewWillAppear:(BOOL)animated {
if([self.title isEqualToString:@"Farady Wing"]){
floors =[[NSArray alloc]
initWithObjects:@"First Floor",@"Second Floor",@"Third Floor",nil];
}else if([self.title isEqualToString:@"London Road"]){
floors =[[NSArray alloc]
initWithObjects:@"Ground Floor",@"First Floor",@"Second Floor",@"Third Floor",nil];
}
}
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.
}
- (void)viewDidUnload
{
[super viewDidUnload];
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
// Return the number of sections.
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
// Return the number of rows in the section.
return [floors count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
tableView.separatorStyle = UITableViewCellSeparatorStyleSingleLine;
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
}
cell.textLabel.text=[self.floors objectAtIndex:[indexPath row]];
return cell;
}
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
//<#RoomViewController#> *roomViewController = [[<#RoomViewController#> alloc] initWithNibName:@"<#Nib name#>" bundle:nil];
} @结尾