2011-04-21 72 views
0
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];  
} 

回答

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; 
} 
+0

感謝它的工作... – Aravindhan 2011-04-21 04:54:19

+0

@ranisha:我想彈出視圖控制器。我怎樣才能做到這一點? – Aravindhan 2011-04-21 07:49:21

+0

@aravindanarvi你想要彈出寫: - [[self navigationController] popViewControllerAnimated:YES]; – Gypsa 2011-04-21 08:06:40

0

直到你seViewController加載你不能使用它的網點,在這裏你正在使用文本框。它不會設置文本,因爲在seViewController *seView = [[seViewController alloc] init];視圖初始化後,您仍然需要將其視圖加載到內存中才能使用它的插座。所以如果你正在使用它的視圖,然後添加子視圖,或呈現modalView或,推動它在導航堆棧上調用該方法。

或者你應該在seviewcontroller中有一個字符串,你將設置和當控制器將被加載到內存中viewDidLoad只是在插入方法中執行你正在做的工作,設置TextField的文本。

此外,我不知道你想用seView做什麼?爲什麼你要創建新的實例而不使用它?可能是你之前創建了這個控制器,並且你想要更改該控制器的textField文本而不是新的。那麼在那種情況下,你應該把這個控制器不是這個,因爲它完全不同的對象。

感謝

0

當您從棧中彈出加載視圖控制器的情況下,你推入堆棧。在這裏,您創建了一個新實例並設置文本字段並將該實例加載到堆棧中。這就是爲什麼文本字段不顯示要設置的值。如果您想將值傳遞給您需要使用某個單例類或應用程序委託的值的類。

0

我認爲它不工作,因爲你通過這個變量你seViewController的新實例,而你是在下一行大跌眼鏡吧。你必須得到同一個實例 -

seViewController *seView = (seViewController*)[self parentViewController]; 
[seView insert:myString]; 
[self.navigationController popViewControllerAnimated:YES]; 
0

,如果我的理解是正確的,你可以用這一個, 可以檢索viewControllers從導航控制器的陣列。 你不需要初始化視圖控制器,這不會像上面解釋的那樣工作。