基于树形结构的导航实现

it2022-05-05  211

记得给segue设定标示符

先设定viewController的Class,然后拉属性,在设置标识符

 

1.LhbTableViewController.h

@interface LhbTableViewController : UITableViewController<UITableViewDataSource,UITableViewDelegate>@property (nonatomic,strong) NSDictionary *provinceDic;@property (nonatomic,strong) NSArray *cityArray;@end

2.LhbTableViewController.m

#import "LhbTableViewController.h"#import "CityTableViewController.h"@interface LhbTableViewController ()@end@implementation LhbTableViewController- (void)viewDidLoad {    [super viewDidLoad];        NSString *path = [[NSBundle mainBundle] pathForResource:@"provinces_cities" ofType:@"plist"];    self.provinceDic = [NSDictionary dictionaryWithContentsOfFile:path];    }- (void)didReceiveMemoryWarning {    [super didReceiveMemoryWarning];    // Dispose of any resources that can be recreated.}#pragma mark - Table view data source- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {    // Return the number of sections.    return 1;}- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {    return self.provinceDic.allKeys.count;}- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell" forIndexPath:indexPath];

    //self.provinceDic.allKeys 是字典中所有的key (省份)    [cell.textLabel setText:[self.provinceDic.allKeys objectAtIndex:indexPath.row]];    return cell;}隐藏状态栏//-(BOOL)prefersStatusBarHidden//{//    return YES;//}#pragma mark - Navigation- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {    //先比较segue    if ([segue.identifier isEqualToString:@"province2city"]) {        //目标控制器        CityTableViewController *cityVC = segue.destinationViewController;        //取得省份的名字        NSString *provinceName = [self.provinceDic.allKeys objectAtIndex:[[self.tableView indexPathForSelectedRow] row]];                cityVC.title = provinceName;        //在各个省份名中取得相应的字典        cityVC.cities = [self.provinceDic objectForKey:provinceName];    }}@end

3.CityTableViewController.h

@interface CityTableViewController : UITableViewController<UITableViewDelegate,UITableViewDataSource>@property (nonatomic,strong) NSArray *cities;@end

4.CityTableViewController.m

#import "CityTableViewController.h"#import "UrlViewController.h"@interface CityTableViewController ()@end@implementation CityTableViewController- (void)viewDidLoad {    [super viewDidLoad];   }#pragma mark - Table view data source- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {    return 1;}- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {    return self.cities.count;}- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell" forIndexPath:indexPath];        // 从所在字典中取得key name所对应的value    [cell.textLabel setText:[[self.cities objectAtIndex:indexPath.row] valueForKey:@"name"]];    return cell;}#pragma mark - Navigation- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {        if ([segue.identifier isEqualToString: @"city2url"] ) {        UrlViewController *urlVC = segue.destinationViewController;     //[self.tableView indexPathForSelectedRow]  是为了选取对应行       NSDictionary *cityDic = [self.cities objectAtIndex:[[self.tableView indexPathForSelectedRow] row]];                urlVC.url = [cityDic objectForKey:@"url"];        urlVC.title = [cityDic objectForKey:@"name"];    }}@end

拉进来一个webView!!!!!

5.UrlViewController.h

@interface UrlViewController : UIViewController@property (weak, nonatomic) IBOutlet UIWebView *webView;@property (nonatomic,strong) NSString *url;@end

6.UrlViewController.m

#import "UrlViewController.h"@interface UrlViewController ()@end

@implementation UrlViewController- (void)viewDidLoad {    [super viewDidLoad];       //把字符串转化成 NSURL 类型的    NSURL *url = [NSURL URLWithString:self.url];        NSURLRequest * request =[NSURLRequest requestWithURL:url];    //加载    [self.webView loadRequest:request];    }- (void)didReceiveMemoryWarning {    [super didReceiveMemoryWarning];    }@end

 

转载于:https://www.cnblogs.com/lhb-gn8080/p/4737680.html

相关资源:关于平级集合如何实现以树形结构呈现的demo

最新回复(0)