0

我在标签栏控制器中嵌入了三个 UIViewController。在第二个视图中,有一个 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:对不起我的英语不好!:(

4

1 回答 1

1

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

于 2012-09-24T20:55:27.513 回答