- 打开classes目录下Sw5AppDelegate.h文件:
@interface Sw5AppDelegate :NSObject <UIApplicationDelegate>{
UIWindow *window;
IBOutlet UITabBarController*mainUtbc;
}
@property (nonatomic,retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) IBOutlet UITabBarController *mainUtbc;
- 然后打开classes/Sw5AppDelegate.m文件:
@synthesize window;
@synthesize mainUtbc; //<=
然后将其设置为第一个页面:
application didFinishLaunchingWithOp
//Override point for customization after application launch.
[self.window addSubview:mainUtbc.view];<<<<==========
[self.windowmakeKeyAndVisible];
return YES;
}
最后是进行资源回收:
- (BOOL)application:(- (void)dealloc {
[mainUtbc
release];
[window release];
[super dealloc];
}
在InterfaceBuilder中进行如下操作:
通过双击Resources/MainWindow.xib文件进入InterfaceBuilder界面,从左侧控件列表中将UITabBarController拉入MainWindow.xib窗口中(不是界面设计窗口),并放在最后。
然后选择Sw5 AppDelegate项,按下右键,在Outlet下面,将mainUtbc后面的园形标记拖到新加入的UITabBarController控件上。
在MainVindow.xib窗口中,选择新加入的UITabBarController,在右上角的属性窗口中,通过+按钮,添加所需要的Tab项,这里我们添加了五个,可以通过双击修改显示文字。
然后在MainWindow.xib窗口中将UITabBarController展开,选择每一个Tab项下的TabItem,然后在右侧属性窗口中指定其所对应的图片。
下是定义more选项所对应的屏幕,在这里我们只是做一个简单的About页面。
单击classes然后按右键,选择NewFile...,然后选择建立一个以UIViewController为基类并自动生成XIB文件(复选框在界面中间)的类:MoreViewController。
双击MoreViewConroller.xib进入InterfaceBuilder,选择MoreViewController的界面设计窗口,从左侧控件库中把TextView加入到这个窗口中,并编辑其中的文件,然后保存。
在MainWindow.xib窗口中,选择“更多”项,在右上部属性窗口中,选择NIB文件为MoreViewController。选中最右侧信息窗口,选择类为MoreViewController。
在Xcode中编辑并运行此程序,应该可以出现有TabBar的界面,点击更多,可以正确显示我们的About页面。
建立TopNavController类,TopNavController.h文件将其基类设置为UINavigationController。
@interface TopNavController :UINavigationController {
}
在Sw5AppDelegate.h中:
引入新定义的类并定义其所对应的属性,如下所示:
#import<UIKit/UIKit.h>
@classTopNavController;
@interface Sw5AppDelegate : NSObject<UIApplicationDelegate> {
UIWindow *window;
IBOutlet UITabBarController*mainUtbc;
IBOutlet TopNavController*mainTncr;<<<<==========
}
@property (nonatomic,retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) IBOutlet UITabBarController *mainUtbc;
@property (nonatomic, retain) IBOutlet TopNavController*mainTncr;<<<<==========
在Sw5AppDelegate.m文件中:引入TopNavController,实例化mainTncr对象,析构函数中释放该对象
#import"TopNavController.h"
@implementationSw5AppDelegate
@synthesize window;
@synthesize mainUtbc;
@synthesize mainTncr;
- (void)dealloc {
[mainTncr release];
[mainUtbc release];
[window release];
[super dealloc];
}
建立列表显示的类DynamicTableViewControll
@interfaceDynamicTableViewControll
}
双击MainWindow.xib打开InterfaceBuilder,进行如下操作:
在MainWindow.xib窗口中,选择Tab Bar Controller项,在右上侧属性窗口中,将第一个Item动态的类变为UINavigationController而不是原来的UIViewController。
选中第一个条目,该条目已经变为Top Nav Controllerselected,选中该条目,在信息窗口中选择类为TopNavController。
在MainWindow.xib窗口中,选择Sw5 App Delegate并按右键,将Outlet中的mainTncr指向TabBar的第一个条目。
打开TabBar第一个条目下的第一个条目,在右上侧信息窗口中指定类为DynamicTableViewControll
打开DynamicTableViewControll
回到Xcode编译运行,应该可以看到一个空的列表界面。
下面输入表格中的数据:
首先在DynamicTableViewControll
@interface DynamicTableViewControll
NSMutableArray *items;
}
@property (nonatomic, retain) NSMutableArray *items;
然后在DynamicTableViewControll
@synthesize items;
初始化界面:
- (void)viewDidLoad {
[super viewDidLoad];
self.title= NSLocalizedString(@"动态",@"身边百事动态");
//
NSMutableArray *itemArray = [[NSArray alloc]initWithObjects:@"food 1", @"food 2", @"room 3", @"goods 4", @"table 5", nil];
self.items = itemArray;
[itemArray release];
//Uncomment the following line to display an Edit button in thenavigation bar for this view controller.
//self.navigationItem.rightBarButtonItem = self.editButtonItem;
}
显示列表表格中的数据:
// Customize the appearance of table view cells.
- (UITableViewCell*)tableView:(UITableView*)tableViewcellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableViewdequeueReusableCellWithI
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefa
}
// Configure the cell...
NSUInteger row = [indexPathrow];
[cell.textLabel setText:[self.itemsobjectAtIndex:row]];
return cell;
}
下面建立条目详细信息页面:
通过在Xcode中选中classes并按右键,选择NewFile,然后选择UIViewController子类,建立ItemDetailViewController
通过双击ItemDetailViewController
由于需要在DynamicTableViewControll
#import<UIKit/UIKit.h>
@classItemDetailViewController
@interface DynamicTableViewControll
//IBOutlet UITableView *tableView;
NSMutableArray *items;
ItemDetailViewController
}
@property (nonatomic, retain) NSMutableArray *items;
@property (nonatomic,
retain) ItemDetailViewController
在DynamicTableViewControll
引入并实例化ItemDetailViewController
#import"DynamicTableViewControll
#import"ItemDetailViewController
#import "Sw5AppDelegate.h"
@synthesize items;
@synthesizeitemDetailViewController
具体单击事件响应函数:
- (void)tableView:(UITableView *)tableViewdidSelectRowAtIndexPath:(NSIndexPath *)indexPath {
// Navigation logic may go here. Create and push another viewcontroller.
NSUInteger row = [indexPathrow];
if (nil == self.itemDetailViewController) {
ItemDetailViewController *idvcObj = [[ItemDetailViewController alloc] initWithNibName:@"ItemDetailViewController"bundle:nil];
self.itemDetailViewController = idvcObj;
[idvcObj release];
}
self.itemDetailViewController.title= [NSString stringWithFormat:@"%@", [self.items objectAtIndex:row]];
Sw5AppDelegate *delegate = [[UIApplication sharedApplication]delegate];
[delegate.mainTncr
pushViewController:self.itemDetailViewController
}
最后是注销该对象:
- (void)dealloc {
[itemDetailViewController release];
[super dealloc];
}