2016-06-16 11 views
0

Ich habe Probleme mit dem Wechsel der Ansichten für UISegmentedControl. Ich habe ein Framework HMSegmentedControl importiert, um mehrere Ansichten (7 Ansichten) zu verwenden. Ich möchte die Ansicht wechseln, wenn Sie auf Neue Übereinstimmungen tippen, dann sollte die Übereinstimmungsansicht angezeigt werden. Wenn Sie auf die Täglichen Empfehlungen tippen, sollte die Übereinstimmungsansicht usw. angezeigt werden. Unten ist mein Code. Ich habe viel versucht, in der Ansicht von segmentedControlChangedValue zu wechseln, aber es funktioniert nicht für mich. Irgendwas zu tun oder mache ich falsch?Wechseln von Ansichten in UISegmentedControl in UIView

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

    } 

Antwort

1

Wird Ihre Methode segmentedControlChangedValue aufgerufen?

Versuchen Sie, einen Haltepunkt hinzuzufügen und den segment.selectedSegmentIndex-Wert zu verfolgen. Ich denke, das Problem kommt von dort.

Als HMSegmentedControl ist keine Unterklasse von UISegmentedControl aber von UIControl sollte das Verfahren sein:

- (void)segmentedControlChangedValue:(HMSegmentedControl *)segment 

statt:

- (void)segmentedControlChangedValue:(UISegmentedControl *)segment 

Hoffnung, das hilft.

+0

funktioniert nicht .. – prasad

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

Das Ereignis ist nicht korrekt. Versuchen Sie folgenden Code

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

Neuinstallieren Ihre Anwendung zu tun.

+0

funktioniert nicht bro – prasad