Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/109.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 ObjectiveC iOs 6开发,设置正确的委托以从第二个viewcontroller调用方法_Iphone_Ios_Objective C_Delegates - Fatal编程技术网

Iphone ObjectiveC iOs 6开发,设置正确的委托以从第二个viewcontroller调用方法

Iphone ObjectiveC iOs 6开发,设置正确的委托以从第二个viewcontroller调用方法,iphone,ios,objective-c,delegates,Iphone,Ios,Objective C,Delegates,我在开发应用程序时遇到了一个问题:我的应用程序显示了一张图片,我在这张图片上得到了一些分数。我正在XML文件中查找点,因此我在2视图控制器中进行了查找: 第一个显示图像视图和导航栏,通过segue调用第二个视图控制器,在第二个视图控制器中,我解析XML文件以获得我将在图像中找到的位置的名称和坐标(以像素为单位)。我的问题是,委托从未初始化,因此我想问您是否可以帮助我解决此问题。我希望你能帮我找到一个正确的方法来完成这个应用程序。我在这里发布我的代码 ViewController.h #impo

我在开发应用程序时遇到了一个问题:我的应用程序显示了一张图片,我在这张图片上得到了一些分数。我正在XML文件中查找点,因此我在2视图控制器中进行了查找: 第一个显示图像视图和导航栏,通过segue调用第二个视图控制器,在第二个视图控制器中,我解析XML文件以获得我将在图像中找到的位置的名称和坐标(以像素为单位)。我的问题是,委托从未初始化,因此我想问您是否可以帮助我解决此问题。我希望你能帮我找到一个正确的方法来完成这个应用程序。我在这里发布我的代码

ViewController.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
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];
    } 
}