我正在使用InAppSettingsKit在我的应用中包含偏好设置。我使用xcode的 storyboard 配置了首选项视图,其中包含以下简单步骤:
1)我创建了一个导航控制器和一个表视图控制器
2)在表控制器中,我使用自定义类:IASKAppSettingsViewController作为控制器。
一切都按预期工作但是现在我正在尝试重新配置应用程序,以便用户更改的设置在离开设置屏幕后生效。
我找到的一个教程说我应该:
创建符合IASKSettingsDelegate协议的委托。 在当前版本中,-settingsViewControllerDidEnd:是唯一的 必要的方法。
所以委托应该有一个方法:
- (void)settingsViewControllerDidEnd:(IASKAppSettingsViewController*)sender {
[self dismissModalViewControllerAnimated:YES];
[self reconfigure];
}
如何创建此委托?我不知道在哪里放这个方法。我可以在storyboard连接检查器中看到代表有一个空间但我无法连接它。请帮我解决这个问题,因为我已经阅读了很多解释代表的教程,他们让我更加困惑。我只需要简单的步骤来创建一个委托并将其连接到我在故事板中创建的控制器。
谢谢!
答案 0 :(得分:2)
我已取得一些进展(但有一个问题)。这就是我所做的:
我没有使用IASKAppSettingsViewController作为我的控制器的类,而是创建了另一个继承自IASKAppSettingsViewController的类。我称之为SettingsController
SettingsController.h
#import <UIKit/UIKit.h>
#import "IASKAppSettingsViewController.h"
@interface SettingsController : IASKAppSettingsViewController <IASKSettingsDelegate>
- (void)settingsViewControllerDidEnd:(IASKAppSettingsViewController*)sender;
@end
SettingsController.m
...
@implementation SettingsController
...
- (void)viewDidLoad
{
[super viewDidLoad];
self.delegate = self;
self.showDoneButton = YES;
}
- (void)settingsViewControllerDidEnd:(IASKAppSettingsViewController*)sender {
// reconfigure code here
}
@end
基本上,我没有使用故事板进行任何委托连接。我必须在控制器中编写<IASKSettingsDelegate>
,并在viewDidLoad方法中使用self.delegate = self;
。
问题是,为了重新配置工作,我需要主视图控制器作为委托(而不是settingscontroller)。我无法做到这一点。有什么帮助吗?
第二次尝试: 好的,现在我使用:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([[segue identifier] isEqualToString:@"settingsSegue"])
{
[[segue destinationViewController] setDelegate:self];
}
}
但它不起作用。我相信这是因为destinationViewController是故事板中的navigationController,它立即显示设置所在的表视图控制器。