【问题标题】:Pass MKMapType variable from UISegmentedControl in FlipsideViewController to MainViewController将 MKMapType 变量从 FlipsideViewController 中的 UISegmentedControl 传递给 MainViewController
【发布时间】:2011-06-02 00:36:29
【问题描述】:

我在将 UISegmentedControl 的索引从 FlipSideViewController.m 传递到包含我的 MKMapView 的 MainViewController.m 时遇到问题。这是我的代码:

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'

【问题讨论】:

    标签: objective-c methods delegates uiviewcontroller mkmapview


    【解决方案1】:

    您的 FlipSideViewController.h 中有一个双 @end。尝试在- (IBAction)done:(id)sender; 之后删除@end

    【讨论】:

    • 好的,修复了该错误,但现在在我的模拟器中,当我翻转视图并单击应用程序意外关闭的任何 UISegmentedControls 时
    • @Saphrosit - 当你发表评论时我正在这样做 - 我编辑了我的 OP 以反映当前的错误
    • 您是否在 .xib 文件中正确链接了 UISegmentedControl?也许一开始你定义了-(IBAction)changeView:(id)sender,在你删除了发件人作为参数之后......这可能是一个原因......
    • 那么 - 是否应该有 :(id)sender 参数?
    • 我的.xib 现在在文件所有者中有一个名为mapType_ 的出口,我将其连接到我的 UISegmentedControl 以消除模具错误。但是当我单击控件中的一个段并单击完成以返回时,没有任何改变。当我再次翻转回翻转视图时,再次选择默认的 0 段....
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-15
    • 2015-10-30
    • 2013-10-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多