我在标签栏控制器中嵌入了三个 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:对不起我的英语不好!:(