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