2009-07-20 67 views
3

這是一個非常簡單的iPhone /可可問題。我有一個在兩個視圖之間轉換的按鈕。我使用界面構建器設置了大部分內容。當我點擊按鈕並顯示第二個視圖時,如何以編程方式更改按鈕的文本(例如,說'回')?訪問控制器中的界面生成器中創建的UI元素?

回答

0

您需要定義並連接「插座」。查看the documentation,記下「連接和綁定」部分。

10

在你的類聲明,聲明一個按鈕對象,並確保它被指定爲一個IBOutlet:

IBOutlet UIButton* myButton; 

一旦您保存更改,如果你回到Interface Builder中,你應該可以看到這個出口當你右鍵點擊你的文件所有者時(假設你已經正確指定了文件所有者)。通過右擊拖動將此插座與屏幕上的UIButton相關聯。

現在屏幕上的對象與您的代碼內名稱相關聯。

徘徊無論你想改變的UIButton的文字,只是說:

[myButton setTitle:@"Back - or whatever else you want it to say" 
      forState: UIControlStateNormal ]; 
// you can set different title text for each state 
// of the button (selected, active, or normal) 
+1

值得澄清,這不是一個對象,而是一個變量。該變量包含一個指向該對象的指針(一旦該筆尖已被加載)。我知道你知道這一點,但許多人把這混在一起,認爲變量是對象。 – 2009-07-20 22:51:02

2

你需要建立一個出口爲IB:

@interface MyViewController : UIViewController { 
    IBOutlet UIButton *myButton; 
} 

保存,彈出IB,將文件的所有者設置爲MyViewController,然後從UIView和UIButton創建引用出口到Connections Inspector中文件所有者的適當點。

然後在執行,你可以這樣做:

[myButton setTitle:@"Back" forState:UIControlStateNormal]; 

如果你迷路與連接,我建議有一個看講義和視頻講座在http://www.stanford.edu/class/cs193p/cgi-bin/index.php,其進入一些細節關於iPhone基礎知識。

希望有所幫助。

4

或者,您可以爲控件分配一個唯一標記,並使用-[UIView viewWithTag:]獲取指向控件的UIView指針。在大多數情況下,網點是首選機制,但標籤在表格單元格等方面很有用。

2

到目前爲止,大多數帖子都專注於創建按鈕,並且非常正確。以下回答問題的其餘部分:

當我單擊按鈕並顯示第二個視圖時,如何以編程方式更改按鈕的文本(例如說'回')?

最簡單的方法,如果我正確理解你的情況,就是使用即插即用的UINavigationBarController。首先,你要你的第二個視圖控制器推到視圖棧:

// In firstViewController.m 
self.navigationController = [[UIViewController alloc]initWithNibName:@"secondView" bundle:nil]; 
[self pushViewController:secondViewController animated:TRUE]; 

當顯示你的第二個視圖控制器,你應該自動獲得在導航欄的左側的後退按鈕。如果有必要改變後退按鈕的文字,你可以簡單地引用它,像這樣:

// In secondViewController.m 
-(void)ViewWillAppear 
{ 
    [self.navigationItem.backBarButtonItem setText:@"GoBack"]; 
} 

也有左,rightBarButtonItem(S),這是很方便的進行更復雜的導航。這是一個少插即用的場景:

// In secondViewController.h 
-(IBAction)goBack; (this should appear as an action in your associated nib file) 

// In secondViewController.m 
-(void)viewDidLoad 
{ 
    self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"GoBack" style:UIBarButtonItemStylePlain target:self action:@selector(goBack)]; 
} 

-(IBAction)goBack 
{ 
    // logic to be done before going back 
    [self popViewControllerAnimated:secondViewController animated:TRUE]; 
} 
+0

所以,這是客觀的-c。它看起來很髒。 – jjnguy 2009-07-21 12:40:34

相關問題