我有两个视图控制器名称RootViewController和SecondViewController。在FirstViewController中,我有这个NSMutableArray
@interface RootViewController : UITableViewController {
NSMutableArray *allClasses;}@property (nonatomic,retain) NSMutableArray *allClasses;
在RootViewController中,我使用allClasses中的所有对象填充UITableView
在我的SecondViewController中我有
@interface SecondViewController : UIViewController <UITextFieldDelegate,UIPickerViewDelegate> {
NSMutableArray *arrayStrings;}
我有一个方法可以将新的NSStrings添加到arrayStrings。我的目标是通过尝试类似于allClasses = arrayStrings的东西将arrayStrings传递给RootViewController。这样,当加载RootViewController时,它可以填充新信息。
我将如何完成这项任务?
答案 0 :(得分:0)
在RootViewController工具中
-(void)viewWillAppear:(BOOL)animated
这种委托方法。在这个方法里面
写
self.allClasses = SecondViewControllerObj.arrayStrings;
SecondViewControllerObj是在RootViewController中作为成员声明的SecondViewController的对象,用于导航到该视图
喜欢
if(SecondViewControllerObj == nil)
{
SecondViewControllerObj = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil];
}
[self.navigationController pushViewController:SecondViewControllerObj animated:YES];
答案 1 :(得分:0)
您需要在第二个视图控制器中具有根视图控制器的引用。在那里你需要将allclasses设置为arrayStrings; 通常,您可以通过以下代码找到对推入堆栈的任何视图控制器的引用。
NSArray *viewConts = [[self navigationController] viewControllers];
for(int i=0;i<[viewConts count];i++)
{
if([[viewConts objectAtIndex:i] isKindOfClass:[RootViewController class]]){
RootViewController *rootController = (RootViewController *)[viewConts objectAtIndex:i];
[rootController setAllClasses:arrayStrings];
}
}
现在在RootViewController的viewWillAppear中,您需要重新加载视图的内容。
希望这有帮助。
谢谢,
Madhup