2012-05-20 98 views
11

我有一個基於UINavigationController的應用程序。我可以編程從我的視圖控制器的viewDidLoad方法中設置的UINavigationBar的標題:UINavigationBar可編輯標題?

self.navigationItem.title = m_name; 

我可以讓這個導航欄標題爲編輯? IE瀏覽器。我希望用戶能夠點擊導航欄中的標題,並能夠對其進行編輯。

這可能嗎?如果有可能,是否有可能符合Apple的人機界面指南? (這篇文章表明,它會,但並沒有告訴我如何實現它 - Make UINavigationBar title editable

非常感謝

彌敦道

回答

20

您可以爲您的標題設置自定義視圖。當 接收機是最上面的項目顯示在導航條中心

titleview的

自定義視圖。

@屬性(非原子,保留)的UIView * titleview的

討論

如果這個屬性值是零,導航項目的標題時,接收器是顯示在導航欄的中心 頂級項目 。如果將此屬性設置爲自定義標題,則將顯示 而不是標題。如果leftBarButtonItem是 不是零,則該屬性將被忽略。

自定義視圖可以包含按鈕。使用 UIButton類中的buttonWithType:方法以 導航欄的樣式將按鈕添加到自定義視圖。自定義標題視圖集中在導航欄 上,並可能調整大小以適合。

如果你要在你的titleView中放置一個UITextField,你可以給它一個clearColor背景並且設置它沒有邊框。 Wala你有一個UINavigationBar標題,你可以點擊和編輯。

+0

感謝解決你的答案瑞安。 +1的答案,還有'瞧'的喜劇拼寫:)。乾杯 –

+0

大聲笑高興我可以幫助和犯下同樣的語法罪行。 :)快樂編碼。 –

+0

有誰知道如何做到這一點靈活的寬度?如果我旋轉我的設備,我希望文本框以標題標籤的相同方式更改它的寬度。 –

0

你可以把一個文本框右側頂部的導航欄,並設置它隱藏/未啓用,使用手勢識別器檢測導航欄上的輕按並將文本字段設置爲啓用/未隱藏。然後在文本框的末尾編輯方法中,將其設置爲隱藏,並將導航欄的標題設置爲文本框的標題。

0

在導航欄上添加一個隱藏文本框,所以在點擊時會彈出一個鍵盤,用戶可以在其中輸入文本。

獲取返回按鈕事件,在那裏您可以使用新添加的文本更改導航欄文本。再次隱藏文本框。

享受編碼:)

0

在NavigationBar上放置一個textField,並將textField背景色設置爲不透明度爲零。

11

瑞恩的解決方案是完全正確的。如果任何人在實現它時遇到困難,這裏有一些示例代碼應該可以幫助你。只需將其粘貼到帶有navigationController的任何類的ViewDidLoad中即可。

UITextField *textField = [[UITextField alloc]initWithFrame:CGRectMake(0, 0, 200, 22)]; 
textField.text = @"Insert Title Here"; 
textField.font = [UIFont boldSystemFontOfSize:19]; 
textField.textColor = [UIColor whiteColor]; 
textField.textAlignment = NSTextAlignmentCenter; 
self.navigationItem.titleView = textField; 

如果您的項目不使用ARC,確保釋放文本框,如下所示:

UITextField *textField = [[[UITextField alloc]initWithFrame:CGRectMake(0, 0, 200, 22)]autorelease]; 

或像這樣:

[textField release]; 

希望有所幫助。

+0

你會如何動態調整它的大小? – Zorayr

2

瑞恩對迅速

let textField = UITextField(frame: CGRect(x: 0, y: 0, width: 200, height: 22)) 
textField.text = "Title" 
textField.font = UIFont.systemFontOfSize(19) 
textField.textColor = UIColor.whiteColor() 
textField.textAlignment = .Center 
self.navigationItem.titleView = textField