Я пытаюсь применить базовую концепцию наследования, мне нужно отобразить родительский viewcontorller textfield.text
в контроллере детского представления. Но я получаю нулевые значенияНе удается получить доступ к переменным контроллера родительского представления
Parent.h
@interface EditEventViewController : UITableViewController
{
UITextField *textEventName;
UITextField *textEventLocation;
UITextField *textStartTime;
UITextField *textEndTime;
UITextField *textDate;
UITextField *textEndDate;
//tried IBOutlet version such as
//IBOutlet UITextField *textEventName;//this didnt work too
}
@property (nonatomic, strong) IBOutlet UITextField *textEventName;
@property (nonatomic, strong) IBOutlet UITextField *textEventLocation;
@property (nonatomic, strong) IBOutlet UITextField *textStartTime;
@property (nonatomic, strong) IBOutlet UITextField *textEndTime;
@property (nonatomic, strong) IBOutlet UITextField *textDate;
@property (nonatomic, strong) IBOutlet UITextField *textEndDate;
Parent.m
@synthesize textEndDate=_textEndDate;
@synthesize textDate=_textDate;
@synthesize textEndTime=_textEndTime;
@synthesize textEventName=_textEventName;
@synthesize textStartTime=_textStartTime;
@synthesize textEventLocation=_textEventLocation;
//test inherritance here
DeleteFromCalendar *deleteControl=[[DeleteFromCalendar alloc] init];
NSLog(@"Delete Request for text name %@",self.textEventName.text);
[deleteControl displayParentStrings];
Child.h
#import "EditEventViewController.h"
@interface DeleteFromCalendar : EditEventViewController
-(void)displayParentStrings;
@end
Child.m
-(void)displayParentStrings
{
NSLog(@"Display Parent Strings");
NSLog(@"DeleteFromCalendar Event Name %@",textEventName.text);
NSLog(@"DeleteFromCalendar Event %@",textEventLocation.text);
}
NSLog:
Delete Request for text name Aeronautical Knowledge Review
DeleteFromCalendar Event Name (null)
DeleteFromCalendar Event Lcoation (null)
Почему я получаю пустой?
Вы подключили элементы пользовательского интерфейса до своих выходов в построителе интерфейса? Кроме того, вам не нужно синтезировать свойства в дочернем, если они были объявлены в родительском. (И в Xcode 4 вам все равно не нужно синтезировать свойства - это теперь автоматически.) –
Не объявляйте снова свойства в child.m, он переопределяет родительские. Также не объявляйте переменную как свойство и член класса, используйте только один из них. ;). Также вам не нужно объявлять метод в файле child.h, он уже объявлен в паритре. – danypata
Извините, скопируйте ошибку патча, не повторно объявляйте текстовые поля в дочернем объекте –