2014-03-07 51 views
0

所以我在Xcode中有一個應用程序,它有一個主視圖控制器和一個設置視圖控制器。我想在設置視圖中有一個分段視圖,觸發主視圖上的操作。設置視圖控制器連接到它自己的類「settingsviewcontroller.h」,視圖控制器連接到它自己的類「viewcontroller.h」。那麼,我該如何做到這一點?我想要一個按鈕在不同的視圖中觸發一個動作

回答

0

一種方法是定義一個協議:

SettingsDelegate.h

@protocol SettingsDelegate 
- (void)settingsUpdated:(NSDictionary *)newSettings 
@end 

包括用在您的視圖控制器的這一頭。讓viewController符合這個協議。建立從設置控制器到視圖控制器的弱參考,例如

SettingsViewController.m

@interface SettingsViewController() 
@property (readwrite, weak) id<SettingsDelegate> settingsDelegate; 
@end 

當settingscontroller被實例化,設置self.settingsDelegate到ViewController。假設您創建從視圖 - 控制的settingscontroller,這將是這樣的:

viewController.m

SettingsController *settingsController = [[SettingsController alloc] init]; 
settingsController.settingsDelegate = self; 
// present the settingsController 

在設置控制器,當設置被更新:

if (self.settingsDelegate) { 
    NSDictionary *newSettings = ...; // set this value 
    [self.settingsDelegate settingsUpdated:newSettings]; 
} 

有關更多詳細信息,請參閱Apple的使用協議https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/WorkingwithProtocols/WorkingwithProtocols.html

+0

雖然我沒有設置代理.h。那是什麼。我是否必須製作類似於第二個應用程序delegate.h的東西? – msweet168

+0

不,你只需要創建一個新的.h文件沒有相應的.m文件。您在新的.h文件中需要的是** SettingsDelegate.h **下的三行。 – bneely

+0

如果需要,我可以爲您創建一個示例Xcode項目。 – bneely

0

*通過我不知道這是否是正確的,在所有

第一種方式:

嘗試做的 - (IBAction爲)...連接。我知道他們是不同的看法,但是也許你仍然可以從不同的響應者那裏得到連接。

第二種方式:

嘗試導入的.h/.m文件,這樣就可以從其他類訪問不同的變量等等

+0

我已經嘗試了這兩件事。第一個根本不起作用,它沒有任何意義。第二個是有道理的,但在我做完之後沒有發生任何事情。我認爲你必須這樣做,然後做其他事情,但我不知道什麼 – msweet168

+0

你想讓按鈕觸發的動作是什麼? – user2779450

+0

分段視圖控制器的一側是mph,另一側是kmh,並且當它在mph上視圖控制器中的標籤顯示爲mph時,更改輸出的公式將更改爲使輸出mph和km做同樣的事情,但爲kmh。 – msweet168

相關問題