//应用程序代理
@interface SimpleTableViewAppDelegate : NSObject <UIApplicationDelegate> {
UIWindow *window; //程序主窗体
UINavigationController *navigationController; //在接口中定义导航控制器
}
@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) UINavigationController *navigationController;
@end
//引入接口
#import "SimpleTableViewAppDelegate.h"
#import "RootViewController.h" //继承UITableViewController的子类接口
@implementation SimpleTableViewAppDelegate
@synthesize window;
@synthesize navigationController;
- (void)applicationDidFinishLaunching:(UIApplication *)application {
/*
通过一般样式初始化UITableViewController子类
*/
RootViewController *rootViewController = [[RootViewController alloc] initWithStyle:UITableViewStylePlain];
//接收一个数组,数据从当前系统获得所有时区作为数组的元素
NSArray *timeZones = [NSTimeZone knownTimeZoneNames];
//根视图控制器UITableViewController中时区名的数组数据等于排序后的时区数组数据
rootViewController.timeZoneNames = [timeZones sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)];
//------------知识点-------------
//编程实例化一个导航控制器,并没有继承某个类或者遵循某个协议,关键是initWithRootViewController:rootViewController方法,他是把rootViewController实例作为导航控制器的根视图。
UINavigationController *aNavigationController = [[UINavigationController alloc] initWithRootViewController:rootViewController];
//赋值到当前程序代理接口中定义的导航控制器类的实体
self.navigationController = aNavigationController;
[aNavigationController release];
[rootViewController release];
//把导航控制器的视图增加到当前的window对象中。
[window addSubview:[navigationController view]];
[window makeKeyAndVisible];
}
- (void)dealloc {
[navigationController release];
[window release];
[super dealloc];
}
@end
//表视图控制器子类
@interface RootViewController : UITableViewController {
NSArray *timeZoneNames; //存储所有时区名字
}
@property (nonatomic, retain) NSArray *timeZoneNames;
@end
#import "RootViewController.h"
#import "SimpleTableViewAppDelegate.h"
@implementation RootViewController
@synthesize timeZoneNames;
- (void)viewDidLoad {
//设定当前控制器的标题,以备导航控制器显示
//通过第一个参数作为键取当前程序沙盒中找Localizable.strings文件中的内容,第二个参数是备注这个字段的意思,不显示到界面中的。
self.title = NSLocalizedString(@"Time Zones", @"Time Zones title");
}
//接口继承自UITableViewController,需要实现这个方法获得一共有多少部分。
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
// 这里只有一个部分.
return 1;
}
//接口继承自UITableViewController,需要实现这个方法获得每一部分有多少行
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
// Return the number of time zone names.
return [timeZoneNames count];
}
//回调方法,表格视图控制器的每一行的显示都是通过这个方法进行处理的
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *MyIdentifier = @"MyIdentifier";
// Try to retrieve from the table view a now-unused cell with the given identifier.
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier];
// If no cell is available, create a new one using the given identifier.
if (cell == nil) {
// Use the default cell style.
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:MyIdentifier] autorelease];
}
// 从时区数组中获得当前行号对应的时区数据作为这行的文本显示
NSString *timeZoneName = [timeZoneNames objectAtIndex:indexPath.row];
cell.textLabel.text = timeZoneName;
return cell;
}
/*
To conform to Human Interface Guildelines, since selecting a row would have no effect (such as navigation), make sure that rows cannot be selected.
当对表格行进行选择时,禁止做选择动作。
*/
- (NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath {
return nil;
}
- (void)dealloc {
[timeZoneNames release];
[super dealloc];
}
@end
分享到:
相关推荐
通过学习此书,读者将了解到如何使用UIViewController类及其子类,如UINavigationController和UITableViewController,来构建复杂的用户流程。此外,书中还会讲解如何进行内存管理,确保视图控制器的性能和效率。 ...
在"UITableViewController-Containment-Demo-master"中,这个特性允许我们将UITableViewController嵌入到其他视图控制器中,如UINavigationController、UISplitViewController或UIPageViewController。通过这种方式...
此外,还可能涉及手势识别、导航控制器(UINavigationController)、表视图控制器(UITableViewController)和分栏控制器(UISplitViewController)的使用。 数据管理是iOS应用的重要部分,书中的源码可能涉及到...
这可以通过UINavigationController实现,它能管理多个视图控制器的堆栈,提供“前进”和“后退”的操作。 最后,事件处理是iOS应用的核心部分。例如,当用户点击表格中的联系人时,我们需要响应`...
这个程序框架利用了Apple的UIKit框架中的几个关键组件,如UINavigationController、UITabBarController、UITableViewController和UISearchDisplayController,来构建一个功能丰富的应用。下面将详细阐述这些知识点。...
2. **UIKit框架**:iOS应用的核心是UIKit框架,源码会涵盖如何创建UI元素(如UILabel、UIButton、UITableView)、控制器(UIViewController、UITableViewController)以及导航控制器(UINavigationController)的...
2. `ViewController.swift`: 这可能是主视图控制器,它可能继承自`UINavigationController`或`UITableViewController`,并实现了DataSource和Delegate协议。 3. `TableViewCell.swift`: 自定义的TableViewCell类,...
UIViewController及其子类如UITableViewController、UINavigationController等,提供了强大的功能,如内容展示、导航控制和手势识别。开发者需要掌握如何正确地使用和自定义视图控制器,以实现复杂的应用逻辑和界面...
- UIViewController生命周期,导航控制器(UINavigationController),tablview控制器(UITableViewController),集合视图控制器(UICollectionViewController)的管理。 - Auto Layout和Size Classes,以实现...
你可以创建自定义视图控制器,或者使用Apple提供的预定义视图控制器,如`UINavigationController`、`UITableViewController`等。 在本例中,`FoodPinStaticTable`可能是一个静态表格视图的示例。在iOS中,`...
在iOS中实现推送通知主要包括以下几个步骤: - **证书准备**:需要在Apple Developer Portal中创建推送证书,并下载到本地。 - **集成推送服务**:使用Apple Push Notification service (APNs)来实现推送功能。 - *...
- 应用可能包含一个导航控制器(UINavigationController)来管理各个页面之间的导航,以及一个表格视图控制器(UITableViewController)用于显示笔记列表。 2. **数据模型**: - 定义一个笔记模型类(Note),...
- **定义与作用**:iOS SDK 是 Apple 提供的一套开发工具集合,它包含了开发者创建 iOS 应用所需要的一切资源,包括但不限于框架、库、工具、文档和示例代码。 - **组成部分**: - **Xcode IDE**:主要的集成开发...
`UINavigationController`管理一系列`UIViewController`,通过堆栈来实现页面的前进和后退。`UIVideoEditorController`则用于编辑视频。 `UIToolbar`和`UITabBar`是两种常见的底部导航元素,前者通常位于界面底部,...
6. 导航控制器(UINavigationController):提供一个堆栈式的导航结构,允许用户通过导航栏上的按钮返回前一个视图。 7. 表视图控制器(UITableViewController)和集合视图控制器(UICollectionViewController):...
- **导航控制器与模态视图控制器**:使用UINavigationController进行页面间的导航,使用UIModalPresentationFullScreen等方式呈现模态视图。 - **表视图控制器**:UITableViewController用于管理表格数据,支持多种...