【问题标题】:Passing UISegmentedControl values from FlipSideViewController in an Utility application to the mainviewcontroller…将 UISegmentedControl 值从实用程序应用程序中的 FlipSideViewController 传递到主视图控制器……
【发布时间】:2011-01-17 20:04:48
【问题描述】:

例如,如果flipsideviewcontroller 中的segmentedcontrol 发生变化,我希望Mainviewcontroller 中的maptype 从satellite 更改为hybrid?我究竟做错了什么?基本上,我希望主视图控制器对翻转视图控制器中所做的更改做出反应!!!

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 所回答)...?

【问题讨论】:

    标签: iphone ios4 uisegmentedcontrol application-settings


    【解决方案1】:

    (1) 通过这种新方法扩展FlipsideViewControllerDelegate协议:

    -(void)flipsideViewControllerSelectionChangedToIndex:(int)index;
    

    (2)在FlipsideViewController中添加IBAction,以响应分段控件的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;
    }
    

    并删除MainViewController中的IBOutlet!

    【讨论】:

    • 我究竟如何实现委托方法?我试过了,但我不知道该怎么做......
    猜你喜欢
    • 1970-01-01
    • 2013-06-21
    • 2016-03-05
    • 1970-01-01
    • 2015-08-18
    • 2014-05-21
    • 1970-01-01
    • 1970-01-01
    • 2014-11-15
    相关资源
    最近更新 更多