2013-05-15 3 views
-1

У меня есть класс UIViewController и класс UITableViewController. В классе UIViewController у меня есть NSMutableArray.Array + UIView Controller + UITableViewController

У меня теперь есть вопрос о том, как загружать данные в мой вид таблицы, отдельный класс, я должен получить доступ к NSMutableArray, который я использовал для заполнения предыдущего класса UIViewController.

Я попытался с помощью делегата получить доступ к массиву в UIViewControllerClass однако массив имел «0 объектов» и был NULL

Я был бы признателен за руководство в правильном направлении здесь.

+1

Здесь есть много существующих вопросов о передаче данных с одного контроллера вида на другой. Прошу немного разобраться. См. Http://stackoverflow.com/search?q=ios+pass+data+uiviewcontroller – rmaddy

ответ

1

Вы можете иметь один контроллер просмотра содержит ссылку на другой контроллер представления и запрашивает у общественности NSMutableArray на нем данные. Аарон предложил это, и это может быть вашим лучшим решением.

Или у вас есть несколько контроллеров просмотра, пытающихся получить доступ к одному и тому же набору данных. Потенциально у вас есть другие классы, которые также захотят получить доступ к этим данным. Возможно, вам захочется рассмотреть возможность вытащить данные из контроллера просмотра и рассказать об этом в нейтральном месте. Вы можете сохранить его в AppDelegate, а затем обратиться к делегатам приложения из любого места, в котором вы нуждаетесь.

id<UIApplicationDelegate> appDelegate = [UIApplication sharedApplication].delegate; 
NSMutableArray *myData = appDelegate.data; 

Вы также могли бы рассмотреть возможность вытягивать всю логику ваших данных и сами данные в отдельный класс и use a Singleton Это позволит вам получить доступ/манипулировать данные довольно легко из любой точки мира.

Последние 2 метода будут изолировать данные от объектов контроллера пользовательского интерфейса и предотвратить необходимость в потенциально несвязанных объектах, требующих хранения ссылок друг на друга. При правильном использовании это уменьшит сложность кода и облегчит управление будущими изменениями мага.

0

Создайте NSMutableArray свойство на вашем UITableViewController класса как так:

@interface CustomTableViewController : UITableViewController 

@property (strong, nonatomic) NSMutableArray *dataFromOtherClass; 

@end 

И тогда, когда вы переход, возможно, как это, вы можете установить dataFromOtherClass свойство:

CustomTableViewController *controller = [[CustomTableViewController alloc] initWithNibName:@"CustomTableViewController" bundle:nil]; 

controller.dataFromOtherClass = myNSMutableArrayData; // <-- Set data like this   

[self.navigationController controller animated:YES]; 

// Or ... 
[self presentViewController:controller animated:YES]; 

// Etc... 
Смежные вопросы