Идентификация экземпляра ViewController в другом ViewController - PullRequest
1 голос
/ 17 марта 2012

В моем приложении у меня есть два контроллера просмотра - UIViewController и UITableViewController.Теперь в моей реализации TableViewController мне нужно извлечь некоторые данные из UIViewController (свойство - массив).Массив, который он синтезирует, так что я на самом деле делаю то, что в реализации UITableViewController я создаю экземпляр моего UIViewController, массив, и просто устанавливаю массив [myUIViewController getTheArray].Я знаю, что это не сработает, просто возвращает ноль, но в моем VC на самом деле полно данных.Я застрял в этой точке, я мог бы попробовать с помощью метода executeSegueWithIdentifier, но эти представления напрямую не связаны друг с другом.Они встроены в панель вкладок, и мой ViewController не имеет абсолютно никакого отношения к моему TableViewController.Любая идея о том, как заставить это работать должным образом?Спасибо.

@interface classA : UIViewController

@property (strong, nonatomic) Playlist* playlist;

-(Playlist*) getTheCurrentPlaylist;
@end

@implementation classA

@synthesize playlist = _playlist;
// add data to _playlist
-(Playlist*) getTheCurrentPlaylist{
return _playlist;
}
@end

сейчас, классу B

@interface classB : UITableViewController
@property (strong ,nonatomic) Playlist* playlistTab;
@end

@implementation classB
@synthesize playlistTab = _playlistTab;

-(void) viewDidLoad{
[super viewDidLoad];
classA *cla = [[classA alloc] init];
// what has to be done here?
_playlistTab = [cla getTheCurrentPlaylist];
}

Надеюсь, это проясняет.

1 Ответ

2 голосов
/ 17 марта 2012

Я не уверен на 100%, что понимаю, что вы имеете в виду, поэтому, пожалуйста, прокомментируйте, если я что-то не так понял.Также я довольно новичок в разработке под iOS.

Хорошо, так что у вас есть контроллер панели вкладок с UIViewController и UITableViewController.Ваша реализация UIViewController содержит некоторые данные, и вашему UITableViewController необходим доступ к этим данным.Вы не можете просто создать новый класс A.Вам нужно сослаться на экземпляр класса A, который вы создали и поместили в панель вкладок.

Одна вещь, которую вы можете сделать, это заставить AppDelegate быть в курсе UIViewController (то есть AppDelegate имеет свойство, которое ссылается наUIViewController. Затем в вашем UITableViewController вы можете сделать что-то вроде этого для доступа к UIViewController:

MyAppDelegate *appDel = (MyAppDelegate *)[[UIApplication sharedApplication] delegate];
appDelegate.myUIViewController.playlist;

Звучит как настоящее простое приложение, поэтому, вероятно, использование чего-то вроде Core Data может быть слишком сложным.выше, чтобы ваш экземпляр ClassA установил значения некоторого singleton , а затем должен был прочитать ClassB из этого или просто создать свойство вашего AppDelegate, которое будет записано в UIViewController и прочитано из вашего табличного представления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...