1。新建一個基于Navigation-based Application的工程。
2。修改原來的RootViewController.h,RootViewController.m,RootViewController.xib為MyTableViewController.h,MyTableViewController.m,MyTableViewController.xib。
3。點擊MainVindow.xib,將Rot View Controller的class設置為:MyTableViewController。
4。新建文件:DetailViewController.m文件并選擇自動生成.h與.xib文件,然后在DetailViewController.xib拖入一個map view控件。
5。代碼:(控件與屬性連接就省略了)
第一個頁面的代碼:
MyTableViewController.h
- #import?<UIKit/UIKit.h> ??
- ??
- @interface?MyTableViewController?:?UITableViewController?{??
- ??????
- ????NSMutableArray?*listData;//表格第一部分的數據 ??
- ????NSMutableArray?*?twolistData;//表格第二部分的數據 ??
- }??
- ??
- @property(nonatomic,retain)?NSMutableArray?*listData;??
- @property(nonatomic,retain)?NSMutableArray?*twolistData;??
- ??
- @end??
#import <UIKit/UIKit.h>
@interface MyTableViewController : UITableViewController {
NSMutableArray *listData;//表格第一部分的數據
NSMutableArray * twolistData;//表格第二部分的數據
}
@property(nonatomic,retain) NSMutableArray *listData;
@property(nonatomic,retain) NSMutableArray *twolistData;
@end
MyTableViewController.m
- #import?"MyTableViewController.h" ??
- ??
- #import?"DetailViewController.h" ??
- ??
- @implementation?MyTableViewController??
- ??
- @synthesize?listData;??
- @synthesize?twolistData;??
- ??
- #pragma?mark?- ??
- #pragma?mark?View?lifecycle ??
- ??
- //設置標題和初始化表格數據 ??
- -?(void)viewDidLoad?{??
- ????[super?viewDidLoad];??
- ??????
- ????listData?=?[[NSMutableArray?alloc]?initWithObjects:@"Beijing",@"Shanghai",@"Guangzhou",nil];??
- ??????
- ????twolistData?=?[[NSMutableArray?alloc]?initWithObjects:@"Changsha",?nil];??
- ??????
- ????self.title?=?@"第一個頁面";??
- ??????
- }??
- #pragma?mark?- ??
- #pragma?mark?Table?view?data?source ??
- ??
- //?設置表格為兩個部分 ??
- -?(NSInteger)numberOfSectionsInTableView:(UITableView?*)tableView?{??
- ????return?2;??
- }??
- //設置每個部分的標題 ??
- -?(NSString?*)tableView:(UITableView?*)tableView?titleForHeaderInSection:(NSInteger)section??
- {??
- ????NSString*?secHeader?=?@"";??
- ??????
- ????if?(section?==?0)??
- ????{??
- ????????secHeader?=?@"中國三大城市";??
- ????}??
- ????else?if?(section?==?1)??
- ????{??
- ????????secHeader?=?@"湖南省會";??
- ????}??
- ????return?secHeader;??
- }??
- ??
- //?設置每個部分的顯示行數 ??
- -?(NSInteger)tableView:(UITableView?*)tableView?numberOfRowsInSection:(NSInteger)section?{??
- ????if?(section?==?0)?{??
- ????????return?listData.count;??
- ????}??
- ????else?if?(section?==?1)?{??
- ????????return?twolistData.count;??
- ????}??
- ????return?0;??
- }??
- ??
- ??
- //?設置行數據 ??
- -?(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];??
- ????}??
- ??????
- ????if?(indexPath.section?==?0)?{??
- ????????cell.textLabel.text?=?[listData?objectAtIndex:indexPath.row];??
- ????}??
- ????else?if(indexPath.section?==?1){??
- ????????cell.textLabel.text?=?[twolistData?objectAtIndex:indexPath.row];??
- ????}??
- ??????
- ??????
- ????return?cell;??
- }??
- ??
- #pragma?mark?- ??
- #pragma?mark?Table?view?delegate ??
- //表格行點擊事件 ??
- -?(void)tableView:(UITableView?*)tableView?didSelectRowAtIndexPath:(NSIndexPath?*)indexPath?{??
- ????NSString?*selectedRow;??
- ????if?(indexPath.section?==?0)?{??
- ????????selectedRow?=?[listData?objectAtIndex:indexPath.row];??
- ????}else?if(indexPath.section?==?1){??
- ????????selectedRow?=?[twolistData?objectAtIndex:indexPath.row];??
- ????}??
- ??????
- ??????
- ????DetailViewController?*detailViewController?=?[[DetailViewController?alloc]?initWithNibName:@"DetailViewController"?bundle:nil];??
- ??????
- ??????
- ????detailViewController.selectedRow?=?selectedRow;??
- ??????
- ????[self.navigationController?pushViewController:detailViewController?animated:YES];??
- ??????
- ????[detailViewController?release];??
- }??
- ??
- #pragma?mark?- ??
- #pragma?mark?Memory?management ??
- ??
- -?(void)didReceiveMemoryWarning?{??
- ????[super?didReceiveMemoryWarning];??
- ??????
- }??
- -?(void)viewDidUnload?{??
- ??????
- }??
- ??
- -?(void)dealloc?{??
- ????[listData?release];??
- ????[twolistData?release];??
- ????[super?dealloc];??
- }??
- ??
- ??
- @end??
#import "MyTableViewController.h"
#import "DetailViewController.h"
@implementation MyTableViewController
@synthesize listData;
@synthesize twolistData;
#pragma mark -
#pragma mark View lifecycle
//設置標題和初始化表格數據
- (void)viewDidLoad {
[super viewDidLoad];
listData = [[NSMutableArray alloc] initWithObjects:@"Beijing",@"Shanghai",@"Guangzhou",nil];
twolistData = [[NSMutableArray alloc] initWithObjects:@"Changsha", nil];
self.title = @"第一個頁面";
}
#pragma mark -
#pragma mark Table view data source
// 設置表格為兩個部分
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 2;
}
//設置每個部分的標題
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
NSString* secHeader = @"";
if (section == 0)
{
secHeader = @"中國三大城市";
}
else if (section == 1)
{
secHeader = @"湖南省會";
}
return secHeader;
}
// 設置每個部分的顯示行數
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
if (section == 0) {
return listData.count;
}
else if (section == 1) {
return twolistData.count;
}
return 0;
}
// 設置行數據
- (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];
}
if (indexPath.section == 0) {
cell.textLabel.text = [listData objectAtIndex:indexPath.row];
}
else if(indexPath.section == 1){
cell.textLabel.text = [twolistData objectAtIndex:indexPath.row];
}
return cell;
}
#pragma mark -
#pragma mark Table view delegate
//表格行點擊事件
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
NSString *selectedRow;
if (indexPath.section == 0) {
selectedRow = [listData objectAtIndex:indexPath.row];
}else if(indexPath.section == 1){
selectedRow = [twolistData objectAtIndex:indexPath.row];
}
DetailViewController *detailViewController = [[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:nil];
detailViewController.selectedRow = selectedRow;
[self.navigationController pushViewController:detailViewController animated:YES];
[detailViewController release];
}
#pragma mark -
#pragma mark Memory management
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
}
- (void)viewDidUnload {
}
- (void)dealloc {
[listData release];
[twolistData release];
[super dealloc];
}
@end
第二個頁面的代碼:
DetailViewController.h
- #import?<UIKit/UIKit.h> ??
- ??
- #import?<Foundation/Foundation.h> ??
- ??
- ??
- @interface?DetailViewController?:?UIViewController?{??
- ??????
- ????NSString?*selectedRow;//用來保存前一個頁面傳過來的參數 ??
- ??????
- ????IBOutlet?UIWebView?*webView;//瀏覽器控件 ??
- ??????
- }??
- ??
- @property?(nonatomic,retain)?NSString?*selectedRow;??
- @property?(nonatomic,retain)?UIWebView?*webView;??
- ??
- @end??
#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
@interface DetailViewController : UIViewController {
NSString *selectedRow;//用來保存前一個頁面傳過來的參數
IBOutlet UIWebView *webView;//瀏覽器控件
}
@property (nonatomic,retain) NSString *selectedRow;
@property (nonatomic,retain) UIWebView *webView;
@end
DetailViewController.m
- #import?"DetailViewController.h" ??
- ??
- @implementation?DetailViewController??
- ??
- @synthesize?selectedRow,webView;??
- ??
- //設置標題和根據傳過來的參數打開google地圖 ??
- -?(void)viewDidLoad?{??
- ????[super?viewDidLoad];??
- ??????
- ????self.title?=?selectedRow;//設置標題 ??
- ??????
- ????NSString*?addressText?=?selectedRow;??
- ??????
- ????addressText?=?[addressText?stringByAddingPercentEscapesUsingEncoding:?NSASCIIStringEncoding];??
- ??????
- ????NSString*?urlText?=?[NSString?stringWithFormat:@"http://maps.google.com/maps?q=%@",addressText];??
- ??????
- ????webView.userInteractionEnabled?=?true;??
- ??????
- ????[webView?loadRequest:[[NSURLRequest?alloc]??initWithURL:[[NSURL?alloc]?initWithString:urlText]]];//打開google地圖 ??
- ??????
- }??
- -?(void)didReceiveMemoryWarning?{??
- ????[super?didReceiveMemoryWarning];??
- }??
- ??
- -?(void)viewDidUnload?{??
- ????[super?viewDidUnload];??
- }??
- ??
- -?(void)dealloc?{??
- ????[super?dealloc];??
- ????[selectedRow?release];??
- ????[webView?release];??
- ??????
- }??
- @end??
#import "DetailViewController.h"
@implementation DetailViewController
@synthesize selectedRow,webView;
//設置標題和根據傳過來的參數打開google地圖
- (void)viewDidLoad {
[super viewDidLoad];
self.title = selectedRow;//設置標題
NSString* addressText = selectedRow;
addressText = [addressText stringByAddingPercentEscapesUsingEncoding: NSASCIIStringEncoding];
NSString* urlText = [NSString stringWithFormat:@"http://maps.google.com/maps?q=%@",addressText];
webView.userInteractionEnabled = true;
[webView loadRequest:[[NSURLRequest alloc] initWithURL:[[NSURL alloc] initWithString:urlText]]];//打開google地圖
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
}
- (void)viewDidUnload {
[super viewDidUnload];
}
- (void)dealloc {
[super dealloc];
[selectedRow release];
[webView release];
}
@end

