0

我有一个主视图控制器和一个“首选项”视图控制器。首选项视图控制器上有一个“保存”按钮。它IBAction位于主 ViewController.m 文件中。

将首选项保存到 后NSUserDefaults,IBAction 会弹回主视图控制器。

此处的最后一个操作是“清除”UITextField该主视图控制器窗口上的一个 s。

问题是,我似乎无法弄清楚如何简单地引用该主视图控制器。

在 VisualBasic 中我们会说: Window1.finalTextField.text = "";

找到'Window1'的obj-c等价物是什么?我已经尝试过 ViewController 的子类,但这似乎只适用于其他Windows,而不适用于主视图控制器。

最后一行代码不起作用: self.finalTextField.text = @"";

- (IBAction)savePrefButton:(id)sender
    {
    int yPref = prefYsegmentedControl.selectedSegmentIndex;
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    [defaults setInteger:yPref forKey:@"yPref"];
    [defaults synchronize];

    NSLog(@"Data saved");

    [self.navigationController popViewControllerAnimated:YES];

    self.finalTextField.text = @"";
}
4

1 回答 1

0

如果finalTextField在您的主视图控制器中被定义为一个 IBOUlet,那么您可以通过它的名称从该视图控制器中访问它:

[finalTextField setText:@""];

当然,请务必将变量链接到 IB 中的文本字段。

如果您想finalTextField从您的首选项视图控制器访问您的主视图控制器,那么您需要 1)在您的主视图控制器上创建一个属性以公开该变量,以及 2)为您的主视图传递一个对您的首选项视图控制器的引用控制器。

例如在属性视图控制器 .h 中:

MainViewController *mainViewController;

@property (nonatomic, weak) MainViewController *mainViewController;

然后在属性视图控制器.m:

[self.mainViewController.finalTextField setText:@""];

然后,当您推送您的 segue(在主视图控制器中)时,请务必将引用设置回来:

在 prepareForSegue 中:

if([segue.identifier isEqualToString:@"XXXX"])
{    
    PropertyViewController *propertyViewController = segue.destinationViewController;
    propertyViewController.mainViewController = self;
}

注意:将 PropertyViewController 和 MainViewController 更改为您的属性视图控制器和主视图控制器的类名。

于 2013-02-10T23:41:10.163 回答