J'ai un projet dans lequel le SwitchViewController est le contrôleur racine Il charge le viewcontroller2 dans un certain état, viewcontroller2 charge modalviewcontroller1 dans certains états. Il y a une fonction 'okButtonPressed' dans modelviewcontroller1 (1 point d'arrêt), je l'espère, il peut notifier viewcontroller2 et appeler la fonction 'dosomething' (// Point d'arrêt 2)protocole et multi viewcontroller
Donc, je mis un protocole, tous viewcontroller (switchviewcontroller , viewcontroller2, modalviewcontroller1) contient le protocole
J'ai défini breakpoint1 et breakpoint2 comme ci-dessous.
Aucune erreur n'a été signalée, mais aucun arrêt au point d'arrêt 2, 'dosomething' n'a été exécuté.
Bienvenue tout commentaire
Merci InterDev
//----------------------------------------------source codes
//myprotocol.h
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
@class Myprotocol;
@protocol MyprotocolDelegate <NSObject>
@optional
- (void)function1 ;
@end
//-----------------------------------
@interface Myprotocol : NSObject {
id <MyprotocolDelegate> delegate;
}
@property (nonatomic, assign) id <MyprotocolDelegate> delegate;
@end
//myprotocol.m
#import "myprotocol.h"
@implementation Myprotocol
@synthesize delegate;
- (void)dealloc {
[super dealloc];
}
@end
//"ModalViewController1.h"
#import <UIKit/UIKit.h>
#import "myprotocol.h"
@interface ModalViewController1 : UIViewController <MyprotocolDelegate> {
id<MyprotocolDelegate> delegate;
}
@property (nonatomic, assign) id<MyprotocolDelegate> delegate;
- (IBAction)okButtonPressed:(id)sender;
@end
//"ModalViewController1.m"
#import "ModalViewController1.h"
@implementation ModalViewController1
@synthesize delegate;
- (IBAction)okButtonPressed:(id)sender;
{
[delegate function1];//breakpoint 1
[self.view removeFromSuperview];
}
//------ViewController2.h"
#import <UIKit/UIKit.h>
#import "myprotocol.h"
@class ModalViewController1 ;
@interface ViewController2 : UIViewController <MyprotocolDelegate>{
ModalViewController1 *vModalViewController1;
id<MyprotocolDelegate> delegate;
}
@property (nonatomic, assign) id<MyprotocolDelegate> delegate;
@property (retain,nonatomic) ModalViewController1 *vModalViewController1;
@end
//----ViewController2.m"--------------
#import "ViewController2.h"
#import "ModalViewController1.h"
@synthesize delegate;
- (void)function1;
{
[self dosomething];//breakpoint 2
}
//SwitchViewController.h
#import <UIKit/UIKit.h>
#import "myprotocol.h"
@class ViewController2;
@class ModalViewController1 ;
@interface SwitchViewController : UIViewController <MyprotocolDelegate> {
ViewController2 *vViewController2;
}
@property (retain,nonatomic) ViewController2 *vViewController2;
@end
//in SwitchViewController.m
ViewController2 *vvViewController2=[[ViewController2 alloc]
initWithNibName:@"View2" bundle:nil];
self.vViewController2=vvViewController2;
[vvViewController2 release];
[self.vViewController2 setDelegate:self];
formatez s'il vous plaît le code en utilisant correctement quatre espaces avant chaque ligne. – FelixLam