您的位置:首页 > 产品设计 > UI/UE

iOS开发之UISegmentedControl实现分页切换

2016-05-26 11:44 597 查看
在我们做应用开发的时候,难免会需要那种切换的效果,如果直接下载三方库,可能你没有自己写的理解的那么透彻,所以这里我介绍一下如何用UISegmentedControl进行切换。

有三个view,分别为view1、view2、view3,通过UISegmentedControl进行三个view的切换。

@interface UIViewDemoViewController : UIViewController {

IBOutlet UIView *view1;

IBOutlet UIView *view2;

IBOutlet UIView *view3;

}

- (IBAction)switchViews:(id)sender;

@end

@interface UIViewDemoViewController : UIViewController {

IBOutlet UIView *view1;

IBOutlet UIView *view2;

IBOutlet UIView *view3;

}

- (IBAction)switchViews:(id)sender;

@end

在Interface Builder中分别建立三个view,关联到各自的输出口,每个view上的UISegmentedControl关联到switchViews:操作。

- (void)viewDidLoad {

[super viewDidLoad];

[self.view addSubview:view1];

[self.view addSubview:view2];

[self.view addSubview:view3];

}

- (IBAction)switchViews:(id)sender{

UISegmentedControl *segmentedControl = sender;

[[NSNotificationCenter defaultCenter] postNotificationName:@"switchViews" object:[NSNumber numberWithInteger:[segmentedControl selectedSegmentIndex]]];

}

- (void)viewDidLoad {

[super viewDidLoad];

[self.view addSubview:view1];

[self.view addSubview:view2];

[self.view addSubview:view3];

}

- (IBAction)switchViews:(id)sender{

UISegmentedControl *segmentedControl = sender;

[[NSNotificationCenter defaultCenter] postNotificationName:@"switchViews" object:[NSNumber numberWithInteger:[segmentedControl selectedSegmentIndex]]];

}

接着,为UISegmentedControl控件建立一个处理类。

@interface SegmentedControl : UISegmentedControl {

IBOutlet UIView *view1;

IBOutlet UIView *view2;

IBOutlet UIView *view3;

IBOutlet UIViewDemoViewController* viewController;

}

@end

@interface SegmentedControl : UISegmentedControl {

IBOutlet UIView *view1;

IBOutlet UIView *view2;

IBOutlet UIView *view3;

IBOutlet UIViewDemoViewController* viewController;

}

@end

将UISegmentedControl控件的Class改为刚创建的处理类:SegmentedControl,然后,将UISegmentedControl控件关联到四个输出口:view分别关联到刚创建的三个view上,viewController关联到File's
Owner上。

- (void)awakeFromNib{

[[NSNotificationCenter defaultCenter] addObserver:self

selector:@selector(switchViews:)

name:@"switchViews"

object:nil];

}

- (void)switchViews:(NSNotification*)notification{

NSNumber *viewNumber = [notification object];

NSInteger i = [viewNumber integerValue];

[self setSelectedSegmentIndex:i];

UIView *chosenView = nil;

switch (i) {

case 0:

chosenView = view1;

break;

case 1:

chosenView = view2;

break;

case 2:

chosenView = view3;

break;

default:

break;

}

if (chosenView) {

[[viewController view] bringSubviewToFront:chosenView];

}

}

- (void)dealloc{

[super dealloc];

[[NSNotificationCenter defaultCenter] removeObserver:self];

}

- (void)awakeFromNib{

[[NSNotificationCenter defaultCenter] addObserver:self

selector:@selector(switchViews:)

name:@"switchViews"

object:nil];

}

- (void)switchViews:(NSNotification*)notification{

NSNumber *viewNumber = [notification object];

NSInteger i = [viewNumber integerValue];

[self setSelectedSegmentIndex:i];

UIView *chosenView = nil;

switch (i) {

case 0:

chosenView = view1;

break;

case 1:

chosenView = view2;

break;

case 2:

chosenView = view3;

break;

default:

break;

}

if (chosenView) {

[[viewController view] bringSubviewToFront:chosenView];

}

}

- (void)dealloc{

[super dealloc];

[[NSNotificationCenter defaultCenter] removeObserver:self];

}

如果有问题,请大家指正交流,谢谢

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: