2014-03-07 28 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

相关问题