加载设置iPhone

时间:2012-09-24 20:53:09

标签: iphone objective-c settings nsuserdefaults

我有三个UIViewController嵌入Tab Bar Controller。 在第二个视图中有一个UITextView和一个UISwitch,它们的值存储在NSUserDefault中。 在第三个视图中有一个UItableView,它的NSArray存储在NSUserDefault中。 现在在第一个视图中我有一个按钮,当我按下这个按钮时,我需要获取UISwitch,UITextView和UITableView的数组的值。 问题是,当我打开我的应用程序时,第二个和第三个视图的“viewDidLoad”方法不会被执行,这样UISwitch,UITextView和UITableView的值就不会从它们的NSUserDefaults加载。 该按钮的方法是:

- (IBAction)send:(id)sender
{
    if ([MFMessageComposeViewController canSendText]) {
        MFMessageComposeViewController *sms = [[MFMessageComposeViewController alloc] init];

        NSString *textToShow = [self.delegate textToShow];

        if ([self.delegate showCoordinates] == TRUE) {
            NSLog(@"YES, I want Coordinates");
        }

        sms.messageComposeDelegate = self;
        sms.body = textToShow;
        sms.recipients = [self.numberSource giveMeNumbers];
        [self presentModalViewController:sms animated:YES];

    }
    else
    {
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Houston, We have a problem" message:@"You can't send SMS with this device" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
        [alert show];
    }
}

问题在于

NSString *textToShow = [self.delegate textToShow];
NSString *textToShow = [self.delegate textToShow];
sms.recipients = [self.numberSource giveMeNumbers];

返回“nil”,因为尚未调用第二个和第三个“viedDidLoad”方法。 如果我点击标签栏控制器中的第二个和第三个视图,将调用“viewDidLoad”方法,它们从NSUserDefaults获取值,当我按下第一个视图上的按钮时,它可以工作!

我该如何解决?

PS:请原谅我的英语不好! :(

1 个答案:

答案 0 :(得分:1)

首先尝试使用init..方法加载ViewControllers。它会调用他们的viewDidLoad

相关问题