我有一个主视图控制器和一个'首选项'视图控制器。 首选项视图控制器上有一个“保存”按钮。 IBAction
位于主ViewController.m文件中。如何从另一个View Controller IBAction引用主视图控制器TextField?
将首选项保存到NSUserDefaults
之后,IBAction弹出回主视图控制器。
此处的最后一个操作是在该主视图控制器窗口中“清除”UITextField
之一。
问题是,我似乎无法弄清楚如何简单地引用主视图控制器。
在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 = @"";
}
可能值得一提的是,如果mainViewController对propertyViewController保持强引用或保留引用,则此方法可能会创建保留周期。为了避免这种情况,你可以使用委托模式。 – isaac 2013-02-10 23:55:27
finalTextField是一个IBOutlet:@property(retain,nonatomic)IBOutlet UITextField * finalTextField; 但以这种方式访问它不起作用。 我有一个ViewController.h和一个ViewController.m文件。 我在回答你的答案的第二部分,但最后一个条目对我来说没有意义。那去哪了? “propertyViewController.mainViewController = self;” – mstace 2013-02-11 00:13:47
在您创建并初始化您的主视图控制器中的属性视图控制器后,就会马上进行。想必你有一个地方,你初始化它,并推到导航控制器。在将其推入导航控制器之前,请将参考设置回主体,以便您可以在属性视图控制器中使用参考。 – Joel 2013-02-11 01:35:28