gpt4 book ai didi

ios - 在 UIView 中的 UISegmentedControl 中切换 View

转载 作者:行者123 更新时间:2023-11-29 00:53:31 24 4
gpt4 key购买 nike

我在切换 UISegmentedControl View 时遇到了问题。我导入了 HMSegmentedControl 框架来使用多个 View (7 个 View )。我想在点击“新匹配”时切换 View ,它应该显示匹配 View ,而在点击“每日推荐”时,它应该显示匹配 View 等等。下面是我的代码。我已经尝试了很多通过 segmentedControlChangedValue 切换 View ,但它对我不起作用。有什么要做的还是我做错了吗?

  @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);

}

最佳答案

您的方法 segmentedControlChangedValue 是否被调用?

尝试在其上添加断点并跟踪 segment.selectedSegmentIndex 值。我认为问题出在这里。

由于 HMSegmentedControl 不是 UISegmentedControl 的子类而是 UIControl 的子类,方法应该是:

  - (void)segmentedControlChangedValue:(HMSegmentedControl *)segment

代替:

  - (void)segmentedControlChangedValue:(UISegmentedControl *)segment

希望这对您有所帮助。

关于ios - 在 UIView 中的 UISegmentedControl 中切换 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37857616/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com