[英]Switching views in UISegmentedControl in UIView
I am stuck up with a problem to switch views for UISegmentedControl
. 我陷入了为
UISegmentedControl
切换视图的问题。 I have imported a framework of HMSegmentedControl
to use multiple views (7 views). 我已经导入了
HMSegmentedControl
框架以使用多个视图(7个视图)。 I want to switch views when tapping on New Matches it should display matches view, and when tapping on the Daily Recommendations, it should display matches view and so on. 我想在点击“新匹配”时切换视图,它应该显示匹配视图,而当点击“每日推荐”时,它应该显示匹配视图,依此类推。 Below is my code.
下面是我的代码。 I have tried a lot in switching view by
segmentedControlChangedValue
, but it doesn't work for me. 我已经通过
segmentedControlChangedValue
在切换视图中尝试了很多,但是对我来说不起作用。 Anything to do or am I doing wrong? 有什么事情要做或我做错了吗?
@interface MatchesViewController ()
@property (nonatomic, strong) UIScrollView *scrollView;
@property (strong, nonatomic) IBOutlet UIScrollView *scrollVw;
@property (strong, nonatomic) IBOutlet UIView *matchesView;
@property (strong, nonatomic) IBOutlet UIView *dailyRecommendationsView;
@property (strong, nonatomic) IBOutlet UIView *preferedMatchesView;
@property (strong, nonatomic) IBOutlet UIView *broaderMatchesView;
@property (strong, nonatomic) IBOutlet UIView *twowayMatcheVsiew;
@property (strong, nonatomic) IBOutlet UIView *reverseMatchesView;
@property (strong, nonatomic) IBOutlet UIView *decideLaterView;
- (IBAction)btnMenuClicked:(id)sender;
@end
@implementation MatchesViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.title = @"Matches";
self.navigationController.navigationBar.barTintColor = [UIColor colorWithRed:16/255.0 green:97/255.0 blue:61/255.0 alpha:1.0];
[self.navigationController.navigationBar
setTitleTextAttributes:@{NSForegroundColorAttributeName : [UIColor whiteColor]}];
[self.scrollVw addSubview:self.matchesView];
[self.scrollVw setContentSize:CGSizeMake(self.view.frame.size.width, self.matchesView.frame.size.height)];
[self.scrollVw addSubview:self.dailyRecommendationsView];
[self.scrollVw setContentSize:CGSizeMake(self.view.frame.size.width, self.dailyRecommendationsView.frame.size.height)];
[self.scrollVw addSubview:self.preferedMatchesView];
[self.scrollVw setContentSize:CGSizeMake(self.view.frame.size.width, self.preferedMatchesView.frame.size.height)];
[self.scrollVw addSubview:self.broaderMatchesView];
[self.scrollVw setContentSize:CGSizeMake(self.view.frame.size.width, self.broaderMatchesView.frame.size.height)];
[self.scrollVw addSubview:self.twowayMatcheVsiew];
[self.scrollVw setContentSize:CGSizeMake(self.view.frame.size.width, self.twowayMatcheVsiew.frame.size.height)];
[self.scrollVw addSubview:self.reverseMatchesView];
[self.scrollVw setContentSize:CGSizeMake(self.view.frame.size.width, self.reverseMatchesView.frame.size.height)];
[self.scrollVw addSubview:self.decideLaterView];
[self.scrollVw setContentSize:CGSizeMake(self.view.frame.size.width, self.decideLaterView.frame.size.height)];
self.view.backgroundColor = [UIColor clearColor];
self.edgesForExtendedLayout = UIRectEdgeNone;
CGFloat viewWidth = CGRectGetWidth(self.view.frame);
// Do any additional setup after loading the view from its nib.
HMSegmentedControl *segmentedControl1 = [[HMSegmentedControl alloc] initWithSectionTitles:@[@"New Matches", @"Daily Recommendations", @"Prefered Matches", @"Broader Matches", @"2-Way Matches", @"Reverse Matches", @"Decide Later"]];
segmentedControl1.autoresizingMask = UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleWidth;
segmentedControl1.frame = CGRectMake(0, 0, viewWidth, 45);
segmentedControl1.segmentEdgeInset = UIEdgeInsetsMake(0, 5, 0, 5);
segmentedControl1.selectionStyle = HMSegmentedControlSelectionStyleFullWidthStripe;
segmentedControl1.selectionIndicatorLocation = HMSegmentedControlSelectionIndicatorLocationDown;
segmentedControl1.backgroundColor = [UIColor colorWithRed:167/255.0 green:148/255.0 blue:4/255.0 alpha:1.0];
//segmentedControl1.selectionStyle = HMSegmentedControlSelectionStyleBox;
//segmentedControl1.selectedSegmentIndex = HMSegmentedControlNoSegment;
segmentedControl1.selectionIndicatorColor = [UIColor whiteColor];
segmentedControl1.selectionIndicatorHeight = 2.0f;
segmentedControl1.verticalDividerEnabled = YES;
segmentedControl1.verticalDividerColor = [UIColor whiteColor];
segmentedControl1.verticalDividerWidth = 1.0f;
[segmentedControl1 setTitleFormatter:^NSAttributedString *(HMSegmentedControl *segmentedControl, NSString *title, NSUInteger index, BOOL selected) {
NSAttributedString *attString = [[NSAttributedString alloc] initWithString:title attributes:@{NSForegroundColorAttributeName : [UIColor whiteColor]}];
return attString;
}];
[segmentedControl1 addTarget:self action:@selector(segmentedControlChangedValue:) forControlEvents:UIControlEventValueChanged];
[self.view addSubview:segmentedControl1];
[self.navigationController.navigationBar
setTitleTextAttributes:@{NSForegroundColorAttributeName : [UIColor whiteColor]}];
}
- (void)segmentedControlChangedValue:(UISegmentedControl *)segment
{
switch (segment.selectedSegmentIndex) {
case 0:
self.matchesView.hidden = NO;
self.dailyRecommendationsView.hidden = YES;
self.preferedMatchesView.hidden = YES;
self.broaderMatchesView.hidden = YES;
self.twowayMatcheVsiew.hidden = YES;
self.reverseMatchesView.hidden = YES;
self.decideLaterView.hidden = YES;
break;
case 1:
self.matchesView.hidden = YES;
self.dailyRecommendationsView.hidden = NO;
self.preferedMatchesView.hidden = YES;
self.broaderMatchesView.hidden = YES;
self.twowayMatcheVsiew.hidden = YES;
self.reverseMatchesView.hidden = YES;
self.decideLaterView.hidden = YES;
break;
case 2:
self.matchesView.hidden = YES;
self.dailyRecommendationsView.hidden = YES;
self.preferedMatchesView.hidden = NO;
self.broaderMatchesView.hidden = YES;
self.twowayMatcheVsiew.hidden = YES;
self.reverseMatchesView.hidden = YES;
self.decideLaterView.hidden = YES;
break;
case 3:
self.matchesView.hidden = YES;
self.dailyRecommendationsView.hidden = YES;
self.preferedMatchesView.hidden = YES;
self.broaderMatchesView.hidden = NO;
self.twowayMatcheVsiew.hidden = YES;
self.reverseMatchesView.hidden = YES;
self.decideLaterView.hidden = YES;
break;
case 4:
self.matchesView.hidden = YES;
self.dailyRecommendationsView.hidden = YES;
self.preferedMatchesView.hidden = YES;
self.broaderMatchesView.hidden = YES;
self.twowayMatcheVsiew.hidden = NO;
self.reverseMatchesView.hidden = YES;
self.decideLaterView.hidden = YES;
break;
case 5:
self.matchesView.hidden = YES;
self.dailyRecommendationsView.hidden = YES;
self.preferedMatchesView.hidden = YES;
self.broaderMatchesView.hidden = YES;
self.twowayMatcheVsiew.hidden = YES;
self.reverseMatchesView.hidden = NO;
self.decideLaterView.hidden = YES;
break;
case 6:
self.matchesView.hidden = YES;
self.dailyRecommendationsView.hidden = YES;
self.preferedMatchesView.hidden = YES;
self.broaderMatchesView.hidden = YES;
self.twowayMatcheVsiew.hidden = YES;
self.reverseMatchesView.hidden = YES;
self.decideLaterView.hidden = NO;
break;
default:
break;
}
}
- (void)uisegmentedControlChangedValue:(UISegmentedControl *)segmentedControl {
NSLog(@"Selected index %ld", (long)segmentedControl.selectedSegmentIndex);
}
Does your method segmentedControlChangedValue
gets called ? 您的方法
segmentedControlChangedValue
是否被调用?
Try to add a breakpoint on it and to track segment.selectedSegmentIndex value. 尝试在其上添加断点并跟踪segment.selectedSegmentIndex值。 I think the problem comes from there.
我认为问题出在那儿。
As HMSegmentedControl is not a subclass of UISegmentedControl but of UIControl, the method should be : 由于HMSegmentedControl不是UISegmentedControl的子类,而是UIControl的子类,因此该方法应为:
- (void)segmentedControlChangedValue:(HMSegmentedControl *)segment
instead of : 代替 :
- (void)segmentedControlChangedValue:(UISegmentedControl *)segment
Hope this helps. 希望这可以帮助。
[segmentedControl1 addTarget:self action:@selector(segmentedControlChangedValue:) forControlEvents:UIControlEventValueChanged];
The event is not correct. 该事件不正确。 Try to do following code
尝试执行以下代码
[segmentedControl1 addTarget:self action:@selector(segmentedControlChangedValue:) forControlEvents:UIControlEventTouchUpInside];
Reinstalling your app. 重新安装您的应用程序。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.