2013-02-12 64 views
0

我有兩個視圖,我試圖顯示文本,我從第一個視圖得到另一個UITextField。由 - (source)顯示的第二個視圖,所以方法ViewWillAppear和ViewDidLoad將不起作用。第二個視圖的viewDidLoad方法在app啓動時運行。設置UITextField.text從另一個類

我試圖讓法第二類

secondClass.h:

@property (strong, nonatomic) IBOutlet UITextField *itemName;//all hooked up in storyboard 
-(void)SetName:(NSString *)name; 

secondClass.m:

-(void)SetName:(NSString *)name{ 
    NSLog(@"%@",name); 
    itemName.text = name;//itemName - textField 
} 

,並第一個使用它:

secondViewConroller *secondView = [[secondViewConroller alloc]init]; 
[secondView SetName:@"Bill"]; 

NSlog顯示「Bill」,但textField.text不會改變任何內容。

我的猜測是應用程序顯示的UITextField沒有變化,因爲它表明,從viewDidLoad方法得到第二種觀點,我需要更新它在某種程度上

我的問題:什麼是改變UI元素的屬性,最好的方法來自不同的班級?

回答

0

所以我找到了一個解決方案:調用方法SetName時出現了一些問題:帶有從第一個UIViewController獲得的參數。

基本上解決方法是:創建NSObject並從第一個UIViewConroller中放入值,然後在第二個中使用它。

TUTORIAL幫我解決了這個問題。

0

最簡單的方法:

secondViewConroller.h:

@property NSString * conversationName; 

secondViewConroller.m:

@synthesize conversationName; 

-(void)SetName:(NSString *)name{ 
    NSLog(@"%@",name); 
    itemName.text = conversationName 
} 

在頁頭:

secondViewConroller *secondView = [[secondViewConroller alloc]init]; 
conversationName = @"Set this text"; 
[secondView SetName:@"Bill"]; 

我建議你閱讀有關協議後那個。

+0

它基本上和我寫的一樣,但是有nsstring屬性。我有同樣的結果 – ignotusverum 2013-02-13 08:39:01

0

最簡單的方法:在 secondViewConroller.h:

@property (nonatomic, retain) NSString *stringName; 

secondViewConroller.m:

@synthesize stringName; 

和你寫的這條線

itemName.text = stringName 

在頁頭viewDidLoad方法:

secondViewConroller *secondView = [[secondViewConroller alloc]init]; 
secondView.stringName = @"Set this text"; 
+0

正如我在我的問題所說,方法viewDidLoad啓動時啓動應用程序 – ignotusverum 2013-02-13 08:40:29

+0

對不起,我真的不明白這個問題。 – ignotusverum 2013-02-13 10:42:48

+0

如果他想編輯現有的viewController的屬性怎麼辦?我會建議使用委託方法創建協議。 – pbibergal 2013-02-13 15:36:42

0

如果您的itemName變量出現在nslog中,則說明您的itemName有問題。 您是否在界面生成器中爲文本字段創建了引用插座? 否則,你可以通過標籤得到正確的文本框,在IB把對文本字段實例標記1和在代碼中完成:

UITextField *tf=(UITextField*)[self.view viewWithTag:1]; 
tf.text=name; 

(更換自我。查看持有文本框的視圖,如果不是直接在主視圖中)

+0

文本字段正在工作,如果我改變它在第二類(它創建的地方)。問題是從第一類 – ignotusverum 2013-02-13 15:23:50

+0

改變它什麼時候顯示secondView?在setname調用之後? – karel 2013-02-13 17:16:09

+0

順便說一句,你現在有一個錯字在你的問題:SetName和SetItemName,其中一個或另一個,但不是兩個;-) – karel 2013-02-13 17:18:55