我遇到了问题。 我有一个带有几个视图控制器的故事板。
我需要做的是:
我需要将一个数组从FirstViewController
传递给SecondViewController
(它们不是邻居,并且不通过segue连接)PikerView将上传数组。之后,挑选的结果应传递给ThirdViewController
。
我有标签应用,其中FirstViewController
和SecondViewControllers
连接到标签栏视图控制器,ThirdViewController
通过推送搜索与SecondViewController
连接。
了解我如何尝试将数据从第一个传递到第二个
CategoryExpencesViewController.h
#import <UIKit/UIKit.h>
#import "AddCategoryViewController.h"
#import "CategoryPickerViewController.h"
@interface CategoryExpencesViewController : UITableViewController <AddCategoryViewControllerDelegate>
@property(nonatomic, weak) IBOutlet UIBarButtonItem *editButton;
@property(nonatomic, strong) NSMutableArray *categories; //list of category items
@property(nonatomic, strong) NSMutableArray *listOfCategories; //list of category names
CategoryExpencesViewController.m
-(void)updateArray
{
CategoryPickerViewController *controller = [[CategoryPickerViewController alloc]init];
controller.categoryList = [[NSMutableArray alloc]init];
controller.categoryList = listOfCategories;
NSLog(@"%d", [listOfCategories count]);
NSLog(@"%d", [controller.categoryList count]);
}
答案 0 :(得分:0)
我认为你需要this
使用你的Push Segue。
segue.sourceViewController
(或自我)将指向SecondViewController
。
segue.sourceViewController.tabBarController
将指向标签栏控制器。
从标签栏控制器中,您会找到FirstViewController
。
答案 1 :(得分:0)
我想你会解决它,但我发布这个只是为了记录:
将数组包装到一个类中,并使其具有静态构造方法:
Wrapper.h:
@property (nonatomic, strong) NSMutableArray* array;
+(Wrapper*)createArray;
Wrapper.m:
+(Wrapper*)createArray{
static Wrapper* instance = nil;
if (instance == nil) {
instance = [[Wrapper alloc] init];
//Your initialization code for the array
}
return instance;
}
然后,在你的FirstViewController中:
-(void)updateArray{
CategoryPickerViewController *controller = [[CategoryPickerViewController alloc]init];
controller.categoryList = [[NSMutableArray alloc]init];
controller.categoryList = [[Wrapper createArray] array];
NSLog(@"%d", [listOfCategories count]);
NSLog(@"%d", [controller.categoryList count]);
}
由于这是对Wrapper的第一次调用,因此生成了数组。 然后在你的SecondViewController中,当你打电话:
secondView.categoryList = [[Wrapper createArray] array];
并获得与FirstViewcontroller中相同的数组。
答案 2 :(得分:-2)
您是否想过NSUserDefault尝试它并且您还可以在AppDelegate类中创建实例全局变量并通过在任何其他ViewController中创建AppDelegate实例来访问它,但我认为NSUserDefault是所有人的最佳选择。