2016-11-24 12 views
0

Надеюсь, что все преуспевают и наслаждаются счастливой жизнью кодирования.Пользовательские делегаты для UIViewController, имеющие ContainerView

Я хочу использовать делегатов ChlidView в 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 

Вопрос Я облицовкой де легат не работает. Сначала контейнер скрыт. Когда пользователь нажимает «+» Кнопка, тогда контейнерView становится видимым. Я хочу, чтобы делегат работал, если я нажму на Новый чат или Новая группа Кнопки.

Пожалуйста, помогите мне запустить этот делегат. Спасибо заранее.

ответ

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

Вы создаете новый экземпляр класса, но никогда его не используете.

containerViewActions 

Этот встроенный контроллер имеет вид другой экземпляр класса, который загружается из раскадровки. Вы должны указать вставить в идентификатор интерфейса, а затем использовать - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender;

в контроллере родительского представления. Вы можете найти segue с [segue identifier] и сохранить указатель на контроллер вида назначения оттуда.

+0

Спасибо за ответ. –