// // 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]; } }