Невозможно вызвать метод в суперпредставлении (хотя работает в другой части приложения) - PullRequest
1 голос
/ 04 декабря 2011

В данный момент у меня возникает действительно раздражающая проблема, когда я пытаюсь создать оверлей, чтобы предоставить неактивный интерфейс при поиске, а затем при касании - отклонить его.

Я адаптировал некоторый код из другой части моего приложения, и для меня они абсолютно одинаковые, ожидайте изменения имени переменной и т. Д.

Вот два заголовочных файла для сравнения

Наложение поиска контактов:

#import <UIKit/UIKit.h>
@class Contacts;
@interface Overlay : UIViewController{
    Contacts *Contact;
}
@property(nonatomic,retain) Contacts *Contact;
@end

Наложение поиска по карте:

#import <UIKit/UIKit.h>
@class Map;
@interface mapOverlay : UIViewController{
    Map *searcher;
}
@property(nonatomic,retain) Map *searcher;
@end

И два файла метода для сравнения

Наложение поиска контактов:

#import "Overlay.h"
#import "Contacts.h"
@implementation Overlay
   @synthesize Contact;
   - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
      [Contact doneSearching_Clicked:nil];
   }
   - (void)dealloc {
      [Contact release];
      [super dealloc];
   }
@end

Наложение поиска по карте:

#import "mapOverlay.h"
#import "Map.h"
@implementation mapOverlay
    @synthesize searcher;
    - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
        [searcher doneSearching_Clicked:nil];
    }
    - (void)dealloc {
       [searcher release];
       [super dealloc];
    }
@end

Так что они оба абсолютно одинаковы и вызывают одну и ту же функцию.

Вот заголовки для классов контактов и карты

Контакты

#import <UIKit/UIKit.h>
@class Overlay;
@interface Contacts : UIViewController <NSXMLParserDelegate , UISearchBarDelegate>{
     Overlay *searchOverlay;
}
- (void)doneSearching_Clicked:(id)sender;
@end

Карта

#import <UIKit/UIKit.h>
#import <MapKit/MapKit.h>
@protocol ModalViewDelegate

- (void)didReceiveMessage:(NSString *)message fromwho:(NSInteger )whichText;

@end
@class mapOverlay;
@interface Map : UIViewController<MKMapViewDelegate,NSXMLParserDelegate, ModalViewDelegate> {
    mapOverlay *searchOverlay;
}
- (void)doneSearching_Clicked:(id)sender;
@end

Я действительно озадачен этим. Я уверен, что я не сделал ничего плохого, поскольку обе реализации абсолютно одинаковы. Разница лишь в том, что у класса Map есть делегат для модального вида. Я взял это и попробовал, но все равно не повезло.

Я проверил, чтобы убедиться, что оба вида регистрируют касания, какие они есть. Просто кажется, что наложение, используемое для карты, не отправляет сообщение в класс Map.

Кто-нибудь знает, что может быть причиной того, что это работает в одном, а не в другом?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...