在文本框中显示字符串的问题

时间:2011-04-21 04:20:23

标签: iphone objective-c xcode

Hi to all,

我从first.m传递了一个变量到seViewController.m。我可以使用NSLog(@variable)打印该变量,但我无法使用textField.text = variable。如何在文本框中打印该变量?

First.m

-(void)buttonPressed01  
{     
          seViewController *seView = [[seViewController alloc] init];    
          [seView insert:myString];  
     [self.navigationController popViewControllerAnimated:YES];     
}    

seviewcontroller.m

-(void)insert:(NSString*) myString  
{        
    NSLog(@"%@",myString);

textField.text=[NSString stringWithFormat:@"%@",myString];     
}

5 个答案:

答案 0 :(得分:2)

seViewController *seView = [[[seViewController alloc] initWithNibName:@"seViewController" bundle:nil] autorelease];
[seView insert:String];
[[self navigationController] pushViewController:seView animated:YES];   

seviewcontroller.m

-(void)insert:(NSString*) myString
{
NSLog(@"%@",myString);

textField.text=myString;
}

答案 1 :(得分:0)

在加载seViewController之前,你无法使用它的出口,这里你使用的是textField。它不会设置文本,因为在初始化seViewController *seView = [[seViewController alloc] init];视图后,您仍然需要在内存中加载其视图才能使用其插座。因此,如果您正在使用其视图,那么在添加子视图或呈现modalView之后,或者在导航堆栈上将其推送调用该方法。

或者你应该在seviewcontroller中设置一个字符串,你将设置它,当控制器将被加载到内存viewDidLoad时,只需在插入方法中执行你正在做的事情,设置TextField的文本。

另外,我不确定你想用seView做什么?为什么要创建新实例而不使用它?可能是您之前已创建此控制器,并且您希望更改该控制器的textField文本而不是新文本。那么在这种情况下你应该引用那个控制器,而不是因为它完全不同的对象。

由于

答案 2 :(得分:0)

当您从堆栈弹出时,它会将您推入的视图控制器的实例加载到堆栈中。在这里,您创建了一个新实例并设置了文本字段并将实例加载到堆栈中。这就是为什么文本字段不显示要设置的值。如果你想将值传递给类,你需要使用一些单例类或app delegate来传递值。

答案 3 :(得分:0)

我认为它不起作用,因为当你在下一行弹出它时,你将这个变量传递给你的seViewController的一个新实例。你必须得到与 -

相同的实例
seViewController *seView = (seViewController*)[self parentViewController];
[seView insert:myString];  
[self.navigationController popViewControllerAnimated:YES];

答案 4 :(得分:0)

如果我理解的是正确的,你可以使用这个, 您可以从导航控制器中检索viewControllers数组。 你不需要初始化视图控制器,这不会像上面解释的那样工作。