Iphone ObjectiveC iOs 6开发,设置正确的委托以从第二个viewcontroller调用方法
我在开发应用程序时遇到了一个问题:我的应用程序显示了一张图片,我在这张图片上得到了一些分数。我正在XML文件中查找点,因此我在2视图控制器中进行了查找: 第一个显示图像视图和导航栏,通过segue调用第二个视图控制器,在第二个视图控制器中,我解析XML文件以获得我将在图像中找到的位置的名称和坐标(以像素为单位)。我的问题是,委托从未初始化,因此我想问您是否可以帮助我解决此问题。我希望你能帮我找到一个正确的方法来完成这个应用程序。我在这里发布我的代码 ViewController.hIphone ObjectiveC iOs 6开发,设置正确的委托以从第二个viewcontroller调用方法,iphone,ios,objective-c,delegates,Iphone,Ios,Objective C,Delegates,我在开发应用程序时遇到了一个问题:我的应用程序显示了一张图片,我在这张图片上得到了一些分数。我正在XML文件中查找点,因此我在2视图控制器中进行了查找: 第一个显示图像视图和导航栏,通过segue调用第二个视图控制器,在第二个视图控制器中,我解析XML文件以获得我将在图像中找到的位置的名称和坐标(以像素为单位)。我的问题是,委托从未初始化,因此我想问您是否可以帮助我解决此问题。我希望你能帮我找到一个正确的方法来完成这个应用程序。我在这里发布我的代码 ViewController.h #impo
#import <UIKit/UIKit.h>
#import "PlacesViewController.h"
@interface ViewController : UIViewController <UIScrollViewDelegate, UITextFieldDelegate, PlacesDelegate>
@property (weak, nonatomic) IBOutlet UIScrollView *viewScroll;
@property (weak, nonatomic) IBOutlet UIImageView *viewImage;
@property (nonatomic, strong) PlacesViewController *placesViewController;
- (IBAction)drawPinToMap:(id)sender;
@end
#import <UIKit/UIKit.h>
@protocol PlacesDelegate;
@interface PlacesViewController : UITableViewController <NSXMLParserDelegate>
@property (assign) id <PlacesDelegate> delegate;
@end
@protocol PlacesDelegate <NSObject>
- (void) drawPinToMapForCity:(NSString*)city andPosX:(NSNumber*)posX andPosY:(NSNumber*)posY;
@end
PlacesViewController.h
#import <UIKit/UIKit.h>
#import "PlacesViewController.h"
@interface ViewController : UIViewController <UIScrollViewDelegate, UITextFieldDelegate, PlacesDelegate>
@property (weak, nonatomic) IBOutlet UIScrollView *viewScroll;
@property (weak, nonatomic) IBOutlet UIImageView *viewImage;
@property (nonatomic, strong) PlacesViewController *placesViewController;
- (IBAction)drawPinToMap:(id)sender;
@end
#import <UIKit/UIKit.h>
@protocol PlacesDelegate;
@interface PlacesViewController : UITableViewController <NSXMLParserDelegate>
@property (assign) id <PlacesDelegate> delegate;
@end
@protocol PlacesDelegate <NSObject>
- (void) drawPinToMapForCity:(NSString*)city andPosX:(NSNumber*)posX andPosY:(NSNumber*)posY;
@end
)
在最后一行中,您可以看到我的委托没有值,因此我无法将变量提供给ViewController,我可以使用它在图像上绘制pin。
我将XML解析器放在PlacesViewController中,这是我的选择。
我希望您能帮助我找到我做错的地方。您需要在
prepareforsgue:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([[segue identifier] isEqualToString:@"some-segue-name"]) {
PlacesViewController *vc = [segue destinationViewController];
// set the delegate to a ViewController reference
vc.delegate = self;
}
}
self.placesViewController
不是将在情节提要中推送的ViewController
试试这个:
- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([[segue identifier] isEqualToString:@"yourSegueName"]) {
[(PlacesViewController*)[segue destinationViewController] setDelegate:self];
}
}
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([[segue identifier] isEqualToString:@"some-segue-name"]) {
PlacesViewController *vc = [segue destinationViewController];
// set the delegate to a ViewController reference
vc.delegate = self;
}
}
- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([[segue identifier] isEqualToString:@"yourSegueName"]) {
[(PlacesViewController*)[segue destinationViewController] setDelegate:self];
}
}