Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/93.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 使用UISegmentedControl在视图之间传递值_Iphone_Ios_Mkmapview_Uisegmentedcontrol - Fatal编程技术网

Iphone 使用UISegmentedControl在视图之间传递值

Iphone 使用UISegmentedControl在视图之间传递值,iphone,ios,mkmapview,uisegmentedcontrol,Iphone,Ios,Mkmapview,Uisegmentedcontrol,我试图在两个视图之间传递一个整数。当我从View1返回MainView时,该值未传递,并且NSLog(@“更改的映射”)未显示在控制台中。我寻找答案,尝试了所有的方法,但都不管用!感觉学员有点不对劲 有什么想法吗 视图1.h @class FlipsideViewController; @protocol FlipsideViewControllerDelegate - (void)flipsideViewControllerDidFinish:(FlipsideViewControl

我试图在两个视图之间传递一个整数。当我从View1返回MainView时,该值未传递,并且NSLog(@“更改的映射”)未显示在控制台中。我寻找答案,尝试了所有的方法,但都不管用!感觉学员有点不对劲

有什么想法吗

视图1.h

@class FlipsideViewController;

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

@interface FlipsideViewController : UIViewController {
}

@property (weak, nonatomic) id <FlipsideViewControllerDelegate> delegate;
@property (nonatomic, retain) IBOutlet UISegmentedControl *mapType;

- (IBAction)valueChangedMap:(id)sender;

@end
MainView.h

@interface MainViewController : UIViewController <FlipsideViewControllerDelegate, UIPopoverControllerDelegate, MKMapViewDelegate> {}

@property (weak, nonatomic) IBOutlet MKMapView *mapView;
@property(weak) id<FlipsideViewControllerDelegate> delegate;

@end

在view1上只需要一个实际的委托属性,而mainView只需要响应该委托协议。以下是您的代理协议的外观:

@property(nonatomic,unsafe_unretained) id delegate;
现在在代码中,当mainview显示或推送view1时,您需要像下面这样连接委托(伪代码):

还有一些吹毛求疵的地方。。。您不应该让viewcontroller自行关闭,当“完成”委托方法触发时,mainView应该关闭view1。此外,在触发之前,您应该始终检查代理是否响应选择器:

if([self.delegate respondsToSelector:@selector(yourselectorname)]) {
    [self.delegate yourselectorname];
}

您确定代理不是零吗?您在哪里设置代理?另外,您的“更改的映射”方法可能应该使用带有默认大小写的开关或if/else,以确保不会捕捉到您期望的值。谢谢。问题是我没有在mainview中连接代理。
@property(nonatomic,unsafe_unretained) id delegate;
view1.delegate = self;
if([self.delegate respondsToSelector:@selector(yourselectorname)]) {
    [self.delegate yourselectorname];
}