2016-06-16 136 views
0

我遇到了切换视图UISegmentedControl的问题。我导入了一个HMSegmentedControl的框架以使用多个视图(7个视图)。我想在点击新匹配时切换视图,它应该显示匹配视图,并且当点击每日建议时,它应该显示匹配视图等等。以下是我的代码。我在segmentedControlChangedValue的切换视图中尝试了很多,但它对我无效。任何事情要做还是我做错了?在UIView中切换UISegmentedControl中的视图

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

    } 

回答

1

您的方法segmentedControlChangedValue被调用吗?

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

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

- (void)segmentedControlChangedValue:(HMSegmentedControl *)segment 

代替:

- (void)segmentedControlChangedValue:(UISegmentedControl *)segment 

希望这有助于。

+0

不工作.. – prasad

0
[segmentedControl1 addTarget:self action:@selector(segmentedControlChangedValue:) forControlEvents:UIControlEventValueChanged]; 

事件不正确。 试着做下面的代码

[segmentedControl1 addTarget:self action:@selector(segmentedControlChangedValue:) forControlEvents:UIControlEventTouchUpInside]; 

重新安装你的应用程序。

+0

不工作的兄弟 – prasad