В моей программе я должен объявить и использовать множественный дочерний элемент UIViewController
как пользовательский элемент управления в моем основном UIViewController
.Но когда я нажимаю на кнопку одного из дочерних контроллеров UIView, я получаю ошибку EXC_BAD_ACCESS
.Пожалуйста, ознакомьтесь со следующей моей примерной структурой кода.
Пример 1:
//--Child-------------------------------------------------------------------
@interface subUIViewController<UIViewController>
-(IBAction)myButtonClick:(id)Sender;
-@implementation subUiViewController
-(IBAction)myButtonClick:(id)Sender
{
NSLog(@"Button Click Event.....");
}
//---Main--------------------------------------------------------------------
@interface mainUIViewController<UIViewController>
@implementation mainUIViewController
-(void)viewDidLoad
{
[super viewDidLoad];
subUiViewController *subViewController=[[subUiViewController alloc] initWithNibNameAndArtist:@"subUiViewController" bundle:nil];
[self.view addSubView: subViewController.view];
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
Но если я объявлю с @property (retain,nonatomic) subUiViewController *subViewController
в MainViewController
, он работает без ошибок.Пожалуйста, смотрите следующий код.
Пример 2:
//---Child------------------------------------------------------------------
@interface subUIViewController<UIViewController>
-(IBAction)myButtonClick:(id)Sender;
@implementation subUiViewController
-(IBAction)myButtonClick:(id)Sender
{
NSLog(@"Button Click Event.....");
}
//----Main-----------------------------------------------------------------
@interface mainUIViewController<UIViewController>
@property(retain,nonatomic) subUiViewController *subViewController;
@implementation mainUIViewController
@synthesize subViewController;
-(void)viewDidLoad
{
[super viewDidLoad];
subViewController=[[subUiViewController alloc] initWithNibNameAndArtist:@"subUiViewController" bundle:nil];
[self.view addSubView: subViewController.view];
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
Я не знаю, почему Пример 1 не работает, а Пример 2 работает.Для меня мне нужно использовать пример 1, потому что мне нужно программно создать дочерний контроллер представления пользовательского интерфейса на основе Core Data Return.Не могли бы вы помочь мне указать, что не так?Как я могу динамически объявить дочерний UI View контроллер в коде?