将数据从委托传递到viewcontroller iOS

时间:2011-09-18 19:12:22

标签: objective-c ios xcode ios4 delegates

我正在尝试将一个NSArray从appDelegate传递给viewController,但似乎没有保留数据。例如。 'courseArray'包含appDelegate中的值,但在viewController中为空。我做错了什么?

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    


    CourseSelectController *courseTimeTableView = [[CourseSelectController alloc] initWithNibName:nil bundle:nil];
    courseTimeTableView.courseArray = self.courseArray;
    [courseTimeTableView release];

    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
    // Override point for customization after application launch.
    self.viewController = [[[WestminsterViewController alloc] init] autorelease];

    if([self.window respondsToSelector:@selector(setRootViewController:)])
    {
        [self.window performSelector:@selector(setRootViewController:) withObject:self.viewController];
    }
    else
    {
        [self.window addSubview:[self.viewController view]];
        [self.viewController.view setFrame:[self.window bounds]];
    }
    [self.window makeKeyAndVisible];
    return YES;

}

3 个答案:

答案 0 :(得分:0)

您将courseArray分配给CourseSelectController的实例,然后通过释放它立即丢弃该控制器。

然后,您创建一个WestminsterViewController并将其指定为窗口的根视图控制器,但该视图控制器从未被分配courseArray

答案 1 :(得分:0)

您在分配courseArray后立即释放了courseTimeTableView。

答案 2 :(得分:0)

您的代码存在一些严重问题。

在第二行中,当您使用self.courseArray设置courseTimeTableView.courseArray时,self.courseArray只返回nil(假设您使用的是常规合成属性)。

然后在第三行中,释放视图控制器!它的保留计数只有1,所以它被解除分配并且不再可用。

首先修复这些:)