用UIPicker实现循环联动效果:
效果图:
具体步骤:
1.新建一个Empty Project,添加一个rootViewController;
2.DXWAppDelegate.h:
#import <UIKit/UIKit.h>
@class rootViewController;
@interface DXWAppDelegate :UIResponder <UIApplicationDelegate>
@property (strong,
nonatomic) UIWindow *window;
@property(nonatomic,strong)rootViewController * rootVController;
@end
DXWAppDelegate.m:
#import "DXWAppDelegate.h"
#import "rootViewController.h"
@implementation DXWAppDelegate
- (void)dealloc
{
[_window release];
[_rootVController
release];
[super dealloc];
}
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[[UIWindowalloc]
initWithFrame:[[UIScreenmainScreen]
bounds]] autorelease];
self.rootVController = [[rootViewControlleralloc]
initWithNibName:@"rootViewController"bundle:nil];
self.window.rootViewController =self.rootVController;
self.window.backgroundColor = [UIColorwhiteColor];
[self.windowmakeKeyAndVisible];
return YES;
}
3.rootViewController.h:
#import <UIKit/UIKit.h>
@interface rootViewController :UIViewController<UIPickerViewDelegate,UIPickerViewDataSource>
@property (retain,
nonatomic) IBOutlet UIPickerView *picker;
@property(retain,nonatomic)NSArray *arrChinese;
@property(retain,nonatomic)NSArray *arrPY;
@end
rootViewController.m:
#import "rootViewController.h"
#define component_0 0
#define other_component
1
#define max 16384
@interfacerootViewController ()
@end
@implementation rootViewController
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [superinitWithNibName:nibNameOrNil
bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
returnself;
}
- (void)viewDidLoad
{
[superviewDidLoad];
NSArray *array = [NSArrayarrayWithObjects:@"上海",@"北京",@"天津",@"四川",@"台湾",@"香港",@"江苏",@"湖北",@"山东",@"浙江",nil];
self.arrChinese = array;
array = [NSArrayarrayWithObjects:@"shanghai",@"beijing",@"tianjin",@"sichuan",@"taiwai",@"xianggang",@"jiangsu",@"hubei",@"shandong",@"zhejiang",nil];
self.arrPY = array;
//用来设置默认选项
[self.pickerselectRow:max/2inComponent:component_0animated:YES];
[self.pickerselectRow:max/2inComponent:other_componentanimated:YES];
}
//每个组件有几行数据
-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
//创建数据
if(component ==component_0)
{
//return [self.arrChinese count]; //动态获取数字
return
max;
}else{
//return [self.arrPY count];
return
max;
}
}
#pragma mark delegate
//每个组件的每行显示什么数据
-(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
if(component ==component_0)
{
return [self.arrChineseobjectAtIndex:row%([self.arrChinesecount])];
}else{
return [self.arrPYobjectAtIndex:row%[self.arrPYcount]];
}
}
//设置几个Component
-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
return
2;
}
//当你对一个pickerView进行了一次操作之后都会被调用
-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
NSString *str =nil;
if(component ==component_0)
{
NSLog(@"%i",row);
[self.pickerselectRow:row
inComponent:other_componentanimated:YES];
}
else
{
NSLog(@"%i",row);
// str = [self.arrPY objectAtIndex:row];
[self.pickerselectRow:row
inComponent:component_0animated:YES];
}
}
- (void)dealloc {
[_picker
release];
[_arrChineserelease];
[_arrPY
release];
[super
dealloc];
}
@end
注意:在使用picker之前要右击控件到File's owner,将delegate和datasource绑定到File''s owner中