2010-07-25 64 views
0

我对OOP相当陌生,几个月前刚刚开始使用Obj-c。所以,请温柔!我很感激你的帮助。现在回答这个问题!iPhone SDK:我可以从一个视图中抓取实例变量并在另一个视图中访问吗?

我有3个文本字段,用户输入姓名,电话和电子邮件。

我收集并使用一个NSString像这样[这是一个名字]将它们放置在一个标签:

- (IBAction)changeGreeting:(id)sender { 
self.name = textInput.text; 

NSString *nameString = name; 
if([nameString length] == 0) { 
    nameString = @"I Forgot"; 
} 
NSString *greeting = [[NSString alloc] 
         initWithFormat:@"Hello, my name is %@! Really!", nameString]; 
label.text = greeting; 
[greeting release]; 
} 

有了这个,我已经能够将文本从text.input放在我标签(如label.text = greeting;中所述)

我有另一种观点,我想让某人查看此信息(也查看标签)。我需要在其他视图中访问名称或Textinput.text。

我该如何做到这一点?

回答

2

如果您不需要在两个视图控制器之间传递更改,则可能需要使用自定义的init方法传递它。这对于确认屏幕来说可能是最好的,其中提示将毫无意义没有这个字符串。

- (id)initWithFrame:(CGRect)aRect username:(NSString*)aName { 
    if((self = [super initWithFrame:aRect])) { 
     _myName = [aName retain]; 
    } 
    return self 
} 

另一种方法是在第一个视图控制器上实现一个方法,并从第二个视图控制器调用它。

- (NSString*)enteredUsername { 
    return _myName; 
} 
+0

非常感谢,这很有帮助!但是,我认为我正在接近这个错误。当用户退出应用程序时,我也想保留所有这些值(如果需要,稍后再调用)。我猜我需要学习NSDictionary类?有更好的建议吗? – Macness 2010-07-26 19:01:10

+0

我建议读一读'NSUserDefaults',它基本上是一个在应用程序启动之间保持不变的字典。 – Justin 2010-07-26 19:09:31

+0

值得一提的是,访问者是多余的,因为'name'被声明为属性。我编辑了我的答案来匹配。 – Justin 2010-07-26 19:34:13

相关问题