У меня есть parentViewController
и subView
, в viewWillAppear
в parentViewController
я добавил subview
к self.view
и я поставил delegate
из подвида в self
. Когда я пытаюсь использовать делегат в subview для push
другого контроллера представления, он не работает, я проверил значение делегата и получил «null».ParentViewController и подтаблицы: установка делегат возвращает нуль
Моя основная идея: когда пользователь нажимает кнопку в подвью, мне нужно нажать другой viewController, используя navigationController
родительского контроля.
Вот мой код
//parentViewController.h
#import "mysubView.h"
@interface parentViewController : UIViewController <mysubViewDelegate>
.
.//Some properties here
.
@end
В файле реализации:
//parentViewController.m
-(void) viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
mysubView *myView;
//GlobalObjects is to load the file in a certain language
myView = [[GlobalObjects loadNibNamed:@"mysubView" owner:self options:nil] objectAtIndex:0];
//Print myView.delegate gets the correct value here
myView.delegate = self;
[self.view addSubview:myView];
}
.
.
.
-(void)pushViewControllerUsingDelegate:(UIViewController *)viewController
{
[self.navigationController pushViewController:viewController animated:YES];
}
В mysubView.h:
//mysubView.h
@protocol mysubViewDelegate <NSObject>
-(void)pushViewControllerUsingDelegate:(UIViewController *)viewController;
@end
@interface mysubView : UIView< UITableViewDataSource, UITableViewDelegate>
{
}
@property (nonatomic , retain) id <mysubViewDelegate> delegate;
-(IBAction)ButtonClicked:(UIButton *)sender;
@end
В mysubView.m
@implementation mysubView
@synthesize delegate;
.
.
.
-(IBAction)ButtonClicked:(UIButton *)sender
{
newViewController *newController = [[newViewController alloc] initWithNibName:@"newViewController" bundle:nil];
//Here is my problem in this line .. self.delegate is null here
[self.delegate pushViewControllerUsingDelegate:newViewController];
}
-(void)pushViewControllerUsingDelegate:(UIViewController *)viewController
{
[self.delegate pushViewControllerUsingDelegate:viewController];
}
@end
Начать классы с прописной буквы, поэтому 'ParentViewController',' newViewController', ... –
Сколько экземпляров 'mysubView' вы создаете? – Wain
Мои классы уже начинаются с заглавной буквы, извините за это, но когда я написал этот вопрос, я использовал маленькие буквы – Sawsan