Передайте переменную MKMapType из UISegmentedControl в FlipsideViewController в MainViewController - PullRequest
1 голос
/ 02 июня 2011

У меня проблемы с передачей индекса UISegmentedControl из FlipSideViewController.m в мой MainViewController.m, который содержит мой MKMapView.Вот мой код:

MainViewController.h

 @interface MainViewController : UIViewController <FlipsideViewControllerDelegate, MKMapViewDelegate> {
   MKMapView *mapView;
 }

 @property (nonatomic, retain) UISegmentedControl *mapType;

 @property (nonatomic, retain) IBOutlet MKMapView *mapView;
 - (IBAction)showInfo:(id)sender;
 @end

FlipSideViewController.h

@protocol FlipsideViewControllerDelegate;

@interface FlipsideViewController : UIViewController {
  id <FlipsideViewControllerDelegate> delegate;
  IBOutlet UISegmentedControl *mapType_;
}

@property (nonatomic, assign) id <FlipsideViewControllerDelegate> delegate;
  - (IBAction)done:(id)sender;

@property (nonatomic, retain) UISegmentedControl *mapType_;
@end

@protocol FlipsideViewControllerDelegate
    - (void)flipsideViewControllerDidFinish:(FlipsideViewController *)controller;
    - (void)flipsideViewControllerSelectionChangedToIndex:(int)index;
@end

FlipSideViewController.m

 - (IBAction)changeView {
  [delegate flipsideViewControllerSelectionChangesToIndex: mapType_.selectedSegmentIndex];
  }

MainViewController.m

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

Моя проблема в том, что в моем симуляторе, когда я щелкаю по любому из сегментов в UISegmentedControl, приложение закрывается.Консоль показывает эту ошибку:

-[FlipsideViewController changeView:]: unrecognized 
 selector sent to instance 0x6d43f30
2011-06-01 19:50:31.055 GermTracker2[893:207] *** 
Terminating app due to uncaught exception 'NSInvalidArgumentException', 
reason: '-[FlipsideViewController changeView:]:   
unrecognized selector sent to instance 0x6d43f30'

1 Ответ

0 голосов
/ 02 июня 2011

у вас есть двойной @end в вашем FlipSideViewController.h.Попробуйте удалить @end после - (IBAction)done:(id)sender;

...