0

Tab Bar Controller に 3 つの UIViewController が埋め込まれています。2 番目のビューには、UITextView と UISwitch があり、それらの値は NSUserDefault に格納されます。3 番目のビューには UItableView があり、その NSArray は NSUserDefault に格納されています。最初のビューにはボタンがあり、このボタンを押すと、UISwitch、UITextView、および UITableView の配列の値を取得する必要があります。問題は、アプリを開いたときに、2 番目と 3 番目のビューの「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];

2 番目と 3 番目の「viedDidLoad」メソッドがまだ呼び出されていないため、「nil」を返します。タブ バー コントローラーの 2 番目と 3 番目のビューをタップすると、「viewDidLoad」メソッドが呼び出され、NSUserDefaults から値が取得され、最初のビューのボタンを押すと機能します。

どうすれば修正できますか?

PS: 下手な英語ですみません!:(

4

1 に答える 1

1

最初に ViewControllers にinit..メソッドをロードしてみてください。それは彼らを呼びますviewDidLoad

于 2012-09-24T20:55:27.513 に答える