【问题标题】:Load settings iPhone加载设置 iPhone
【发布时间】:2012-09-16 08:50:53
【问题描述】:

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

【问题讨论】:

    标签: iphone objective-c settings nsuserdefaults


    【解决方案1】:

    首先尝试使用init.. 方法加载您的视图控制器。它将调用他们的viewDidLoad

    【讨论】:

    • 究竟是什么不起作用?在init之后查看viewDidLoad调用,是否调用?
    猜你喜欢
    • 2011-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多