//
// test10ViewController.h
// test10
//
// Created by lily bear on 12-2-13.
// Copyright 2012年 lily. All rights reserved.
//
#import<UIKit/UIKit.h>
@interface test10ViewController :UIViewController <UITableViewDelegate,UITableViewDataSource>{
NSArray *listData;
}
@property (nonatomic,retain)NSArray *listData;
@end
//
// test10ViewController.m
// test10
//
// Created by lily bear on 12-2-13.
// Copyright 2012年 lily. All rights reserved.
//
#import"test10ViewController.h"
@implementation test10ViewController
@synthesize listData;
- (void)dealloc
{
[listDatarelease];
[superdealloc];
}
- (void)didReceiveMemoryWarning
{
// Releases the view if it doesn't have a superview.
[superdidReceiveMemoryWarning];
// Release any cached data, images, etc that aren't in use.
}
#pragma mark - View lifecycle
// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad
{
NSArray *array = [[NSArrayalloc]initWithObjects:@"Sleepy",@"Sneezy",@"Bashful",@"Happy",@"Doc",@"Grumpy",@"Dopey",@"Thorin",@"Dorin",@"Nori",@"Ori",@"Balin",@"Dwalin",@"Fili",@"Kili",@"Oin",@"Gloin",@"Bifur",@"Bofur",@"Bombur",nil];
self.listData = array;
[array release];
[superviewDidLoad];
}
- (void)viewDidUnload
{
[superviewDidUnload];
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
self.listData = nil;
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
// Return YES for supported orientations
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
#pragma mark -
#pragma mark Table View Data Source Methods
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return [self.listDatacount];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
static NSString *SimpleTableIdentifier =@"SimpleTableIdentifier";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:SimpleTableIdentifier];
if(cell == nil){
cell = [[[UITableViewCellalloc]initWithStyle:UITableViewCellStyleDefaultreuseIdentifier: SimpleTableIdentifier]autorelease];
}
UIImage *image = [UIImage imageNamed:@"star.png"];
cell.imageView.image = image;
NSUInteger row = [indexPath row];
cell.textLabel.text = [listDataobjectAtIndex:row];
cell.textLabel.font = [UIFont boldSystemFontOfSize:50];
if(row < 7)
cell.detailTextLabel.text =@"Mr.Disney";
else
cell.detailTextLabel.text =@"Mr.Tolkien";
return cell;
}
#pragma mark -
#pragma mark Table Delegate Methods
/*
- (NSInteger)tableView:(UITableView *)tableView indentationLevelForRowAtIndexPath:(NSIndexPath *)indexPath{ NSUInteger row = [indexPath row];
return row;
}*/
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
NSUInteger row = [indexPath row];
NSString *rowValue = [listData objectAtIndex:row];
NSString *message = [[NSString alloc] initWithFormat:@"You selected %@", rowValue];
UIAlertView *alert = [[UIAlertViewalloc]initWithTitle:@"Row Selected!"message:messagedelegate:nilcancelButtonTitle:@"Yes, I Did"otherButtonTitles:nil];
[alert show];
[message release];
[alert release];
[tableViewdeselectRowAtIndexPath:indexPathanimated:YES];
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
return 70;
}
@end
//
// test11ViewController.h
// test11
//
// Created by lily bear on 12-2-14.
// Copyright 2012年 lily. All rights reserved.
//
#import<UIKit/UIKit.h>
#define kNameValueTag1
#define KColorValueTag2
@interface test11ViewController :UIViewController <UITableViewDataSource,UITableViewDataSource>{
NSArray *computers;
}
@property (nonatomic,retain) NSArray *computers;
@end
//
// test11ViewController.m
// test11
//
// Created by lily bear on 12-2-14.
// Copyright 2012年 lily. All rights reserved.
//
#import"test11ViewController.h"
@implementation test11ViewController
@synthesize computers;
- (void)dealloc
{
[computersrelease];
[superdealloc];
}
- (void)didReceiveMemoryWarning
{
// Releases the view if it doesn't have a superview.
[superdidReceiveMemoryWarning];
// Release any cached data, images, etc that aren't in use.
}
#pragma mark - View lifecycle
// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad
{
[superviewDidLoad];
NSDictionary *row1 = [[NSDictionaryalloc] initWithObjectsAndKeys:@"MacBook",@"Name",@"White",@"Color",nil];
NSDictionary *row2 = [[NSDictionaryalloc] initWithObjectsAndKeys:@"MacBook Pro",@"Name",@"Silver",@"Color",nil];
NSDictionary *row3 = [[NSDictionaryalloc] initWithObjectsAndKeys:@"iMac",@"Name",@"Silver",@"Color",nil];
NSDictionary *row4 = [[NSDictionaryalloc] initWithObjectsAndKeys:@"Mac Mini",@"Name",@"Silver",@"Color",nil];
NSDictionary *row5 = [[NSDictionaryalloc] initWithObjectsAndKeys:@"Mac Pro",@"Name",@"Silver",@"Color",nil];
NSArray *array = [[NSArray alloc] initWithObjects:row1,row2,row3,row4,row5,nil];
self.computers = array;
[row1 release];
[row2 release];
[row3 release];
[row4 release];
[row5 release];
[array release];
}
- (void)viewDidUnload
{
computers = nil;
[superviewDidUnload];
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
// Return YES for supported orientations
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
#pragma mark -
#pragma mark Table Data Source Methods
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
return [self.computerscount];
}
#pragma mark -
#pragma mark Table View Delegate Methods
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
static NSString *CellTableIdentifier = @"CellTableIdentifier";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellTableIdentifier];
if(cell==nil){
cell = [[[UITableViewCellalloc] initWithStyle:UITableViewCellStyleDefaultreuseIdentifier:CellTableIdentifier] autorelease];
CGRect nameLableRect = CGRectMake(0,5, 70, 15);
UILabel *nameLable = [[UILabel alloc] initWithFrame:nameLableRect];
nameLable.textAlignment =UITextAlignmentRight;
nameLable.text=@"Name";
nameLable.font= [UIFontboldSystemFontOfSize:12];
[cell.contentViewaddSubview:nameLable];
[nameLable release];
CGRect colorLableRect = CGRectMake(0,26, 70, 15);
UILabel *colorLable = [[UILabel alloc] initWithFrame:colorLableRect];
colorLable.textAlignment =UITextAlignmentRight;
colorLable.text =@"Color";
colorLable.font = [UIFontboldSystemFontOfSize:12];
[cell.contentViewaddSubview:colorLable];
[colorLable release];
CGRect nameValueRect = CGRectMake(80,5, 200, 15);
UILabel *nameValue = [[UILabel alloc] initWithFrame:nameValueRect];
nameValue.tag =kNameValueTag;
[cell.contentViewaddSubview:nameValue];
[nameValue release];
CGRect colorValueRect = CGRectMake(80,25, 200, 15);
UILabel *colorValue = [[UILabel alloc] initWithFrame:colorValueRect];
colorValue.tag =KColorValueTag;
[cell.contentViewaddSubview:colorValue];
[colorValue release];
}
NSUInteger row = [indexPath row];
NSDictionary *rowData = [self.computersobjectAtIndex:row];
UILabel *name = (UILabel *)[cell.contentViewviewWithTag:kNameValueTag];
name.text = [rowDataobjectForKey:@"Name"];
UILabel *color = (UILabel *)[cell.contentViewviewWithTag:KColorValueTag];
color.text = [rowDataobjectForKey:@"Color"];
return cell;
}
@end
//
// test12ViewController.h
// test12
//
// Created by lily bear on 12-2-15.
// Copyright 2012年 lily. All rights reserved.
//
#import<UIKit/UIKit.h>
#define KNameValueTag1
#define KColorValueTag2
@interface test12ViewController :UIViewController <UITableViewDataSource,UITableViewDelegate>{
NSArray *computers;
UITableViewCell *tvCell;
}
@property (nonatomic,retain) NSArray *computers;
@property (nonatomic,retain) IBOutletUITableViewCell *tvCell;
@end
//
// test12ViewController.m
// test12
//
// Created by lily bear on 12-2-15.
// Copyright 2012年 lily. All rights reserved.
//
#import"test12ViewController.h"
@implementation test12ViewController
@synthesize computers;
@synthesize tvCell;
- (void)dealloc
{
[computersrelease];
[tvCellrelease];
[superdealloc];
}
- (void)didReceiveMemoryWarning
{
// Releases the view if it doesn't have a superview.
[superdidReceiveMemoryWarning];
// Release any cached data, images, etc that aren't in use.
}
#pragma mark - View lifecycle
// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad
{
[superviewDidLoad];
NSDictionary *row1 = [[NSDictionaryalloc] initWithObjectsAndKeys:@"MacBook",@"Name",@"White",@"Color",nil];
NSDictionary *row2 = [[NSDictionaryalloc] initWithObjectsAndKeys:@"MacBook Pro",@"Name",@"Silver",@"Color",nil];
NSDictionary *row3 = [[NSDictionaryalloc] initWithObjectsAndKeys:@"iMac",@"Name",@"Silver",@"Color",nil];
NSDictionary *row4 = [[NSDictionaryalloc] initWithObjectsAndKeys:@"Mac Mini",@"Name",@"Silver",@"Color",nil];
NSDictionary *row5 = [[NSDictionaryalloc] initWithObjectsAndKeys:@"Mac Pro",@"Name",@"Silver",@"Color",nil];
NSArray *array = [[NSArray alloc] initWithObjects:row1,row2,row3,row4,row5,nil];
self.computers = array;
[row1 release];
[row2 release];
[row3 release];
[row4 release];
[row5 release];
[array release];
}
- (void)viewDidUnload
{
self.computers = nil;
self.tvCell = nil;
[superviewDidUnload];
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
// Return YES for supported orientations
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
#pragma mark -
#pragma mark Table View Data Source Methods
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
return [self.computerscount];
}
#pragma mark -
#pragma mark Table View Delegate Methods
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
static NSString *CustomCellIdentifier =@"CustomCellIdentifier";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CustomCellIdentifier];
if(cell == nil){
NSArray *nib = [[NSBundlemainBundle] loadNibNamed:@"CustomCell"owner:selfoptions:nil];
if([nib count] > 0){
cell = self.tvCell;
}
else{
NSLog(@"failed to load CustomCell nib file!");
}
}
NSUInteger row = [indexPath row];
NSDictionary *rowData = [self.computersobjectAtIndex:row];
UILabel *colorLable = (UILabel *)[cell viewWithTag:KNameValueTag];
colorLable.text = [rowDataobjectForKey:@"Color"];
UILabel *nameLable = (UILabel *)[cell viewWithTag:KColorValueTag];
nameLable.text = [rowDataobjectForKey:@"Name"];
return cell;
}
@end
//
// main.m
// test13
//
// Created by lily bear on 12-2-15.
// Copyright 2012年 lily. All rights reserved.
//
#import<UIKit/UIKit.h>
int main(int argc,char *argv[])
{
NSAutoreleasePool *pool = [[NSAutoreleasePoolalloc] init];
int retVal = UIApplicationMain(argc, argv,nil, nil);
[pool release];
return retVal;
}
//
// test13ViewController.m
// test13
//
// Created by lily bear on 12-2-15.
// Copyright 2012年 lily. All rights reserved.
//
#import"test13ViewController.h"
@implementation test13ViewController
@synthesize names;
@synthesize keys;
- (void)dealloc
{
[namesrelease];
[keysrelease];
[superdealloc];
}
- (void)didReceiveMemoryWarning
{
// Releases the view if it doesn't have a superview.
[superdidReceiveMemoryWarning];
// Release any cached data, images, etc that aren't in use.
}
#pragma mark - View lifecycle
// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad
{
[superviewDidLoad];
NSString *path = [[NSBundlemainBundle] pathForResource:@"sortednames"ofType:@"plist"];
NSDictionary *dict = [[NSDictionaryalloc] initWithContentsOfFile:path];
self.names = dict;
[dict release];
NSArray *array = [[names allKeys] sortedArrayUsingSelector:@selector(compare:)];
self.keys = array;
}
- (void)viewDidUnload
{
names = nil;
keys = nil;
[superviewDidUnload];
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
// Return YES for supported orientations
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
#pragma mark -
#pragma mark Table View Data Source Methods
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
return [keys count];
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
NSString *key = [keys objectAtIndex:section];
NSArray *nameSection = [names objectForKey:key];
return [nameSection count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
NSUInteger section = [indexPath section];
NSUInteger row = [indexPath row];
NSString *key = [keys objectAtIndex:section];
NSArray *nameSection = [names objectForKey:key];
static NSString *SectionTableIdentifier =@"SectionTableIdentifier";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:SectionTableIdentifier];
if(cell == nil){
cell = [[UITableViewCellalloc] initWithStyle:UITableViewCellStyleDefaultreuseIdentifier:SectionTableIdentifier];
}
cell.textLabel.text = [nameSectionobjectAtIndex:row];
return cell;
}
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{
NSString *key = [keys objectAtIndex:section];
return key;
}
- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView{
return keys;
}
@end
//
// test14ViewController.h
// test14
//
// Created by lily bear on 12-2-15.
// Copyright 2012年 lily. All rights reserved.
//
#import<UIKit/UIKit.h>
@interface test14ViewController :UIViewController <UITableViewDataSource,UITableViewDelegate, UISearchBarDelegate>{
UITableView *table;
UISearchBar *search;
NSDictionary *allName;
NSMutableDictionary *names;
NSMutableArray *keys;
BOOL isSearching;
}
@property (nonatomic,retain) IBOutletUITableView *table;
@property (nonatomic,retain) IBOutletUISearchBar *search;
@property (nonatomic,retain) NSDictionary *allName;
@property (nonatomic,retain) NSMutableDictionary *names;
@property (nonatomic,retain) NSMutableArray *keys;
- (void)resetSearch;
- (void)handleSearchForTerm:(NSString *)searchTerm;
@end
//
// test14ViewController.m
// test14
//
// Created by lily bear on 12-2-15.
// Copyright 2012年 lily. All rights reserved.
//
#import"test14ViewController.h"
#import"NSDictionary-MutableDeepCopy.h"
@implementation test14ViewController
@synthesize table;
@synthesize search;
@synthesize allName;
@synthesize names;
@synthesize keys;
- (void)resetSearch{
NSMutableDictionary *allNamesCopy = [self.allNamemutableDeepCopy];
self.names = allNamesCopy;
[allNamesCopy release];
NSMutableArray *keyArray = [[NSMutableArrayalloc] init];
[keyArrayaddObject:UITableViewIndexSearch];
[keyArrayaddObjectsFromArray:[[self.allNameallKeys] sortedArrayUsingSelector:@selector(compare:)]];
self.keys = keyArray;
[keyArray release];
}
- (void)handleSearchForTerm:(NSString *)searchTerm{
NSMutableArray *sectionsToRemove = [[NSMutableArrayalloc] init];
[selfresetSearch];
for(NSString *key in self.keys){
NSMutableArray *array = [names valueForKey:key];
NSMutableArray *toRemove = [[NSMutableArrayalloc] init];
for(NSString *name in array){
if([name rangeOfString:searchTerm options:NSCaseInsensitiveSearch].location ==NSNotFound)
[toRemoveaddObject:name];
}
if([array count] == [toRemove count])
[sectionsToRemoveaddObject:key];
[array removeObjectsInArray:toRemove];
[toRemove release];
}
[self.keysremoveObjectsInArray:sectionsToRemove];
[sectionsToRemoverelease];
[tablereloadData];
}
- (void)dealloc
{
[tablerelease];
[searchrelease];
[allNamerelease];
[namesrelease];
[keysrelease];
[superdealloc];
}
- (void)didReceiveMemoryWarning
{
// Releases the view if it doesn't have a superview.
[superdidReceiveMemoryWarning];
// Release any cached data, images, etc that aren't in use.
}
#pragma mark - View lifecycle
// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad
{
[superviewDidLoad];
NSString *path = [[NSBundlemainBundle] pathForResource:@"sortednames"ofType:@"plist"];
NSDictionary *dict = [[NSDictionaryalloc] initWithContentsOfFile:path];
self.allName = dict;
[dict release];
[selfresetSearch];
[tablereloadData];
[tablesetContentOffset:CGPointMake(0.0,44.0) animated:NO];
}
- (void)viewDidUnload
{
self.table = nil;
self.search = nil;
self.allName = nil;
self.names = nil;
self.keys = nil;
[superviewDidUnload];
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
// Return YES for supported orientations
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
#pragma mark -
#pragma mark Table View Data Source Methods
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
return ([keys count] > 0) ? [keyscount]: 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
if([keys count] ==0){
return 0;
}
NSString *key = [keys objectAtIndex:section];
NSArray *nameSection = [names objectForKey:key];
return [nameSection count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
NSUInteger section = [indexPath section];
NSUInteger row = [indexPath row];
NSString *key = [keys objectAtIndex:section];
NSArray *nameSection = [names objectForKey:key];
static NSString *SectionTableIdentifier =@"SectionTableIdentifier";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:SectionTableIdentifier];
if(cell == nil){
cell = [[UITableViewCellalloc] initWithStyle:UITableViewCellStyleDefaultreuseIdentifier:SectionTableIdentifier];
}
cell.textLabel.text = [nameSectionobjectAtIndex:row];
return cell;
}
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{
if([keys count] ==0)
return nil;
NSString *key = [keys objectAtIndex:section];
if(key == UITableViewIndexSearch)
return nil;
return key;
}
- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView{
if(isSearching)
return nil;
return keys;
}
#pragma mark -
#pragma mart Table View Delegate Methods
- (NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath{
[searchresignFirstResponder];
isSearching = NO;
search.text = @"";
[tableView reloadData];
return indexPath;
}
#pragma mark -
#pragma mark Search Bar Delegate Methods
- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar{
NSString *searchTerm = [searchBar text];
[selfhandleSearchForTerm:searchTerm];
}
- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText{
if([searchText length] == 0){
[selfresetSearch];
[tablereloadData];
}
[selfhandleSearchForTerm:searchText];
}
- (void)searchBarCancelButtonClicked:(UISearchBar *)searchBar{
isSearching = NO;
search.text = @"";
[selfresetSearch];
[tablereloadData];
[searchBarresignFirstResponder];
}
- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar{
isSearching = YES;
[tablereloadData];
}
- (NSInteger)tableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString *)title atIndex:(NSInteger)index{
NSString *key = [keys objectAtIndex:index];
if(key == UITableViewIndexSearch){
[tableView setContentOffset:CGPointZero animated:NO];
return NSNotFound;
}
else return index;
}
@end
[to be continued]