0

J'espère que tout va bien et que vous jouissez d'une bonne vie de codage.Délégués personnalisés pour UIViewController ayant ContainerView

Je souhaite utiliser des délégués de ChlidView dans ParentView.

ChatHomeViewController (ParentView)

enter image description here

ChatHomeViewController.h

#import <UIKit/UIKit.h> 
#import "ChatActionsViewController.h" 

@interface  ChatHomeViewController:UIViewController<UITableViewDataSource,UITableViewDelegate, ChatActionsViewControllerDelegate> 

@property (weak, nonatomic) IBOutlet UITableView *tableViewChatHome; 

@property (weak, nonatomic) IBOutlet UIButton *cmdBackMenu; 


@property (weak, nonatomic) IBOutlet UIView *containerViewActions; 
@property (weak, nonatomic) IBOutlet UIButton *cmdShowActions; 
@property (weak, nonatomic) IBOutlet UIView *viewHeadin; 

@end 

ChatHomeViewController.m

@interface ChatHomeViewController() 

@property (strong, nonatomic) NSMutableArray *tableData; 

@end 

@implementation ChatHomeViewController 
@synthesize tableViewChatHome; 
@synthesize cmdShowActions; 
@synthesize containerViewActions; 

- (void)viewDidLoad { 
[super viewDidLoad]; 
[self setNeedsStatusBarAppearanceUpdate]; 

[cmdShowActions addTarget:self action:@selector(displayChatActions) forControlEvents:UIControlEventTouchUpInside]; 

[containerViewActions setHidden:YES]; 

} 

-(void)displayChatActions{ 

ChatActionsViewController *chatActions = [[ChatActionsViewController alloc] initWithNibName:@"ChatActionsViewController" bundle:nil]; 
chatActions.delegate = self; 

[containerViewActions setHidden:NO]; 
} 

#pragma mark - ChatActions Delegates 
-(void)creatNewChat:(NSString *)newChatOrGroup{ 

NSLog(@"creatNewChat:(NSString *)newChatOrGroup"); 
[containerViewActions setHidden:YES]; 

} 

ChatActionsViewController (ChileView)

enter image description here

ChatActionsViewController.h #import

@protocol ChatActionsViewControllerDelegate <NSObject> 

@optional 
-(void)creatNewChat: (NSString *)newChatOrGroup; 

@end 

@interface ChatActionsViewController : UIViewController 

@property (assign,nonatomic) id<ChatActionsViewControllerDelegate> delegate; 

@property (weak, nonatomic) IBOutlet UIView *viewBG1; 
@property (weak, nonatomic) IBOutlet UIView *viewBG2; 

@property (weak, nonatomic) IBOutlet UIButton *cmdCreatNewGroup; 
@property (weak, nonatomic) IBOutlet UIButton *cmdCreatNewChat; 

- (IBAction)actionNewChat:(id)sender; 
- (IBAction)actionNewGroup:(id)sender; 

@end 

ChatActionsViewController.m

#import "ChatActionsViewController.h" 

@interface ChatActionsViewController() 

@end 

@implementation ChatActionsViewController 
@synthesize viewBG1, viewBG2; 
@synthesize cmdCreatNewChat, cmdCreatNewGroup; 
@synthesize delegate; 

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    [[viewBG1 layer] setCornerRadius:4]; 
    [[viewBG1 layer] setBorderColor:[UIColor lightTextColor].CGColor]; 
    [[viewBG1 layer] setBorderWidth:1]; 
    viewBG1.layer.masksToBounds = NO; 
    viewBG1.layer.shadowOffset = CGSizeMake(1, 1); 
    viewBG1.layer.shadowRadius = 3; 
    viewBG1.layer.shadowOpacity = 0.2; 

    [[viewBG2 layer] setCornerRadius:4]; 
    [[viewBG2 layer] setBorderColor:[UIColor lightTextColor].CGColor]; 
    [[viewBG2 layer] setBorderWidth:1]; 
    viewBG2.layer.masksToBounds = NO; 
    viewBG2.layer.shadowOffset = CGSizeMake(1, 1); 
    viewBG2.layer.shadowRadius = 3; 
    viewBG2.layer.shadowOpacity = 0.2; 

} 

- (IBAction)actionNewChat:(id)sender { 

    NSLog(@"actionNewChat"); 
    [[self delegate] creatNewChat:@"1"]; 
} 

- (IBAction)actionNewGroup:(id)sender { 

    NSLog(@"actionNewGroup"); 
    [[self delegate] creatNewChat:@"2"]; 
} 
@end 

La question que je suis confronté est de legate ne fonctionne pas proprement. Initialement, le containerView est caché. Lorsque l'utilisateur clique sur "+" Button, puis containerView devient visible. Je veux délégué travaillé si je clique sur Nouveau Chat ou Nouveau Groupe Boutons.

S'il vous plaît aidez-moi à gérer ce délégué. Merci d'avance.

Répondre

0
ChatActionsViewController *chatActions = [[ChatActionsViewController alloc] initWithNibName:@"ChatActionsViewController" bundle:nil]; 
chatActions.delegate = self; 

Vous créez une nouvelle instance de la classe mais ne l'utilisez jamais.

containerViewActions 

Ce contrôleur de vue intégrée a une autre instance de la classe qui est chargé à partir du story-board. Vous devez attribuer au incorporer un identificateur dans le Générateur d'interface, puis utiliser - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender;

dans le contrôleur de vue parent. Vous pouvez trouver le segue avec [segue identifier] et stocker un pointeur vers le contrôleur de vue de destination à partir de là.

+0

Merci pour la réponse. –