Передача значений UISegmentedControl из FlipSideViewController в приложении Utility в mainviewcontroller… - PullRequest
0 голосов
/ 17 января 2011

Например, я хочу, чтобы тип карты в контроллере Mainview изменялся со спутника на гибрид, если изменяется сегментированный контроллер в контроллере flipsideview? Что я делаю неправильно? В общем, я хочу, чтобы mainviewcontroller реагировал на изменения, сделанные в flipsideviewcontroller !!!

FlipsideViewController.h

#import <UIKit/UIKit.h>
#import <MapKit/MapKit.h>
#import <MapKit/MKMapView.h>

@protocol FlipsideViewControllerDelegate;


@interface FlipsideViewController : UIViewController {
            id <FlipsideViewControllerDelegate> delegate;

        IBOutlet UISegmentedControl *mapType_;

    }

    @property (nonatomic, retain) UISegmentedControl *mapType_;

    @end

MainViewController.h

@interface MainViewController : UIViewController <XXXX> {
IBOutlet UISegmentedControl *mapType;
}

@property (nonatomic, retain) UISegmentedControl *mapType;

@end

MainViewController.m

  -(void)viewDidLoad {
        if(mapType.selectedSegmentIndex==0){
            mapView.mapType=MKMapTypeStandard;
        }

        else if (mapType.selectedSegmentIndex==1){
            mapView.mapType=MKMapTypeSatellite;
        }

        else if (mapType.selectedSegmentIndex==2) {
            mapView.mapType = MKMapTypeHybrid;
        }
    }

Есть идеи, как сделать это возможным? Что я делаю неправильно? Был бы очень признателен за ответ! Спасибо!

Как мне реализовать метод делегата (как ответил phix23) ...?

1 Ответ

4 голосов
/ 17 января 2011

(1) Расширьте протокол FlipsideViewControllerDelegate с помощью этого нового метода:

-(void)flipsideViewControllerSelectionChangedToIndex:(int)index;

(2) Добавьте IBAction в FlipsideViewController для повторной привязки к ValueChanged-Event сегментированного элемента управления:

-(IBAction) valueChanged {
     [delegate flipsideViewControllerSelectionChangedToIndex: mapType_.selectedSegmentIndex];
}

(3) В MainViewController реализовать метод делегата:

-(void)flipsideViewControllerSelectionChangedToIndex:(int)index {
    if (index == 0) mapView.mapType = MKMapTypeStandard;
    if (index == 1) mapView.mapType = MKMapTypeSatellite;
    if (index == 2) mapView.mapType = MKMapTypeHybrid;
}

И удалить IBOutlet в MainViewController!

...