iOS中

2011-12-07 61 views
5

編寫一個通用的應用程序。當我編程一個通用的應用程序,可以說我有一個IBAction爲像這樣:iOS中

(IBAction)magicCode:(id)sender { 

    textField1.text = "TEST"; 

} 

我是否需要爲每個視圖創建(iPad和iPhone)的新IBAction爲。我不能在頭文件中有兩次textField1,所以我只是想知道其他人如何做到這一點。我是否需要在iPhone應用中使用與iPad應用中名稱不同的文本字段?還是有別的方法可以讓其他人做到這一點?

+0

以防萬一你實際上這樣做 - 如果你的名字的東西'textField1'等等,那麼你是在和自己的痛苦的世界。使用描述性變量名稱,以便立即明白是什麼。否則,你最終只會迷惑自己,讓自己的生活方式變得比以往更加困難。 – Jim

+0

@Jim謝謝,但這只是一個例子。我遵循傳統的命名標準來命名我的對象。 – ios85

回答

3

沒有,你可以在一個UIViewController相同的IBAction爲IBOutlet中和處理在兩個不同的筆尖(一個用於iPhone和一部iPad版)文本框。這是MVC體系結構中View Controller和Views之間的整體分離點。

只要使用相同的UIViewController作爲文件的所有者在兩個筆尖,使所有適當的IBOutlet中,IBAction爲連接,這樣就可以了。

+0

這是「文件所有者」,而不是「文件管理器」。 – Jim

+0

@Jim,謝謝。答案已糾正。 –

4

是否需要爲每個視圖(iPad和iPhone)創建一個新的IBAction。

首先,操作通常包括在視圖控制器,而不是視圖。我認爲這可能是你的意思,但我指出了區別,因爲我看到很多人對此感到困惑。

當你創建一個通用的應用程序,即單一的應用程序,適應它的用戶界面設備(iPad或iPhone/iPod Touch的)上,它的運行,常見的策略是提供不同的視圖佈局,使最好的使用可用的屏幕尺寸,但使用相同的視圖控制器。所以,舉個例子,假設你有一個有主/細節界面的應用程序。在小型設備上,您首先會呈現界面的主要部分,而當用戶選擇某些內容時,您會顯示界面的詳細部分。在iPad上,屏幕更大,您可以在分割視圖中同時顯示主界面和詳細界面。比較兩者,視圖可能會有所不同,視圖控制器呈現方式不同,但視圖控制器本身應保持不變。這是一件好事,因爲創建應用程序的許多工作都涉及到創建視圖控制器。

如果我所描述的程序是類似(或者,如果你可以把它類似的),則沒有,你千萬不要因爲你將要使用在同一個視圖控制器需要爲iPad和iPhone單獨行動這兩種情況。不過,有時候,兩款不同設備上的應用程序的行爲不同,以至於具有iPad特定的視頻控制器和iPhone特定的視圖控制器纔有意義。您可能仍然可以通過從包含操作的公共父類中派生每個操作來使用相同的操作。如果不是,你需要讓每個類實現自己的操作。