У меня есть контроллер навигации, находящийся внутри контроллера панели вкладок, и всякий раз, когда я пытаюсь получить доступ к классу из класса в контроллере навигации, все мои значения возвращаются (ноль).
Вот как я пытаюсьсделать это.
AppDelegate.h
@interface AppDelegate : UIResponder <UIApplicationDelegate, UITabBarControllerDelegate> {
NSString *searchQueryA;
}
@property (strong, nonatomic) NSString *searchQueryA;
ThirdViewController.h
#import "MasterViewController.h"
#import "AppDelegate.h"
@class MasterViewController;
@interface ThirdViewController : UIViewController {
code
}
@property (strong, retain) MasterViewController *masterViewController;
ThirdViewController.m
- (IBAction)showDetail:(id)sender {
AppDelegate *appDelegate = [[AppDelegate alloc] init];
appDelegate.searchQueryA = _searchField.text;
masterViewController = [[MasterViewController alloc] initWithNibName:@"MasterViewController" bundle:nil];
[self.navigationController pushViewController:masterViewController animated:YES];
}
MasterViewController.h
#import "AppDelegate.h"
@interface MasterViewController : UITableViewController
{
NSString *searchQueryM;
}
@property (nonatomic, strong) NSString *searchQueryM;
MasterViewController.m
AppDelegate *appDelegate = [[AppDelegate alloc] init];
searchQueryM = appDelegate.searchQueryA;
NSLog(@"%@", searchQueryM);
И в журнале я вижу, что searchQueryM равен (null).Если я попытаюсь получить доступ к переменной в AppDelegate из другого класса, который не связан с контроллером навигации, то он показывает отлично.Что мне не хватает?
Если вам нужно больше кода, я с радостью его предоставлю.
РЕДАКТИРОВАТЬ:
Для ясности я опубликую изменения кода здесь:
У меня есть делегат в моем AppDelegate.h
Как указал Леонардо, я только выделил и инициировал свой AppDelegate.Я изменил этот фрагмент на следующий:
AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
searchQueryM = appDelegate.searchQueryA;
, но все равно не пойдет, так как searchQueryM все еще (ноль).
Это то, что я делаю с searchQueryM
MasterViewController.h
@interface MasterViewController : UITableViewController
{
NSString *searchQueryM;
}
@property (nonatomic, strong) NSString *searchQueryM;
MasterViewController.m
@synthesize searchQueryM;
Я довольно новичок в Objective-C (а также в OO-программировании) и, вероятно, должен прочитать о нем книгу, но, похоже,для меня, как будто это не намного больше, чем это.Исправьте меня, если я ошибаюсь.
РЕДАКТИРОВАТЬ 2
ThirdViewController.h
@interface ThirdViewController : UIViewController {
UITextField *_searchField;
}
@property (nonatomic, strong) IBOutlet UITextField *searchField;
ThirdViewController.m
@synthesize searchField = _searchField;
...
- (IBAction)showDetail:(id)sender {
_code_
NSLog(@"%@", searchField.text);
_code_
Если я наберу "asd" в текстовом поле searchField и выведу его с журналом, я получу "asd".}