如何将数据传递给以模态方式呈现的子UINavigationController(即通过initWithRootViewController)

时间:2011-03-27 06:01:29

标签: iphone ios uinavigationcontroller presentmodalviewcontroller

如何将数据传递给子节点UINavigationController,它通过“[[UINavigationController alloc] initWithRootViewController:newItemController]”进行模态显示;“?

这是使用这种创建子控制器的方法(在本例中是newItemController),它是通过UINavigationController initWithRootViewController方法初始化的,因此似乎没有能力在这里调用自定义newItemController init方法?也无法访问newItemController实例本身来调用自定义的“setMyData”类型方法吗?

NewItemController *newItemController = [NewItemController alloc];
newItemController.delegate = self;
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:newItemController];
[self.navigationController presentModalViewController:navController animated:YES];

2 个答案:

答案 0 :(得分:4)

您的问题中的代码缺少调用NewItemController的init。 例如:

NewItemController *newItemController = [[NewItemController alloc] init];

现在,当您创建NewItemController时,您可以创建自己的init:

-(id)initWithStuff:(NSString *)example {
    self = [super init];
    if (self) {
        // do something with the example data
    }
    return self;
}

或者您可以向NewItemController类添加属性

// header file
@property (nonatomic, copy) NSString *example;

// .m file
@synthesize example;

// when you create the object
NewItemController *item = [[NewItemController alloc] init];
item.example = @"example string data";

答案 1 :(得分:1)

关键是您没有将数据传递给导航控制器,而是将其传递给导航控制器的根视图控制器。