- //
- // LanguageListController.h
- // MyPresidents2
- //
- // Created by Wunderman on 12-1-30.
- // Copyright (c) 2012年 __MyCompanyName__. All rights reserved.
- //
- #import <UIKit/UIKit.h>
- #import "DetailViewController.h"
- @interface LanguageListController : UITableViewController {
- DetailViewController *detailViewController;
- NSArray *languageNames;
- NSArray *languageCodes;
- }
- @property(nonatomic, assign) DetailViewController *detailViewController;
- @property(nonatomic, retain) NSArray *languageNames;
- @property(nonatomic, retain) NSArray *languageCodes;
- @end
- //
- // LanguageListController.m
- // MyPresidents2
- //
- // Created by Wunderman on 12-1-30.
- // Copyright (c) 2012年 __MyCompanyName__. All rights reserved.
- //
- #import "LanguageListController.h"
- @implementation LanguageListController
- @synthesize detailViewController = _detailViewController;
- @synthesize languageNames = _languageNames;
- @synthesize languageCodes = _languageCodes;
- - (void)viewDidLoad {
- self.languageNames = [NSArray arrayWithObjects:
- @"Englist", @"French", @"German", @"Spanish", nil];
- self.languageCodes = [NSArray arrayWithObjects:
- @"en", @"fr", @"de", @"es", nil];
- self.clearsSelectionOnViewWillAppear = NO;
- self.contentSizeForViewInPopover =
- CGSizeMake(320.0, [self.languageCodes count] * 44.0);
- }
- - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
- return 1;
- }
- - (NSInteger)tableView:(UITableView *)tableView
- numberOfRowsInSection:(NSInteger)section {
- return [self.languageCodes count];
- }
- - (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];
- }
- // Configure the cell...
- cell.textLabel.text = [self.languageNames objectAtIndex:[indexPath row]];
- return cell;
- }
- - (void)tableView:(UITableView *)tableView
- didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
- self.detailViewController.languageString =
- [self.languageCodes objectAtIndex: indexPath.row];
- }
- - (void)viewDidUnload {
- self.detailViewController = nil;
- self.languageNames = nil;
- self.languageCodes = nil;
- }
- - (void)dealloc {
- [self.detailViewController release];
- [self.languageNames release];
- [self.languageCodes release];
- [super dealloc];
- }
- @end
- - (IBAction)touchLanguageButton:(id)sender {
- if (self.languagePopoverController.popoverVisible == NO) {
- LanguageListController *languageListController =
- [[LanguageListController alloc] init];
- languageListController.detailViewController = self;
- UIPopoverController *poc = [[UIPopoverController alloc]
- initWithContentViewController:
- languageListController];
- [poc presentPopoverFromBarButtonItem:self.languageButton
- permittedArrowDirections:UIPopoverArrowDirectionAny
- animated:YES];
- self.languagePopoverController = poc;
- //[poc release]; 如果release ,点击四次后就抛错误。
- //Current language: auto; currently objective-c
- [languageListController release];
- } else {
- [self.languagePopoverController dismissPopoverAnimated:YES];
- }
- }
本文介绍了一个使用Objective-C编写的语言列表控制器的实现细节,包括如何创建和配置UITableView以显示语言列表,并通过UIPopoverController展示语言选择界面。

1万+

被折叠的 条评论
为什么被折叠?



