1

我正在使用InAppSettingsKit在我的应用程序中包含首选项。我使用 xcode 的故事板配置了首选项视图,步骤如下:

1) 我创建了一个导航控制器和一个表视图控制器
2) 在表控制器中,我使用了自定义类:IASKAppSettingsViewController,作为控制器。

一切都按预期工作,但现在我正在尝试重新配置应用程序,以便用户更改的设置在离开设置屏幕后生效。

我发现的一个教程说我应该:

创建一个符合 IASKSettingsDelegate 协议的委托。在当前版本中,-settingsViewControllerDidEnd: 是唯一需要的方法。

所以委托应该有一个方法,如:

- (void)settingsViewControllerDidEnd:(IASKAppSettingsViewController*)sender {
    [self dismissModalViewControllerAnimated:YES];
    [self reconfigure];
}

如何创建此委托?我不知道把这个方法放在哪里。我可以在故事板连接检查器中看到代表有一个空间,但我无法连接它。请帮我弄清楚这一点,因为我已经阅读了大量解释代表的教程,他们让我更加困惑。我只需要简单的步骤来创建委托并将其连接到我在情节提要中创建的控制器。

谢谢!

4

1 回答 1

2

我已经取得了一些进展(但有一个问题)。这就是我所做的:

我没有使用 IASKAppSettingsViewController 作为控制器的类,而是创建了另一个继承自 IASKAppSettingsViewController 的类。我称它为 SettingsController

设置控制器.h

#import <UIKit/UIKit.h>
#import "IASKAppSettingsViewController.h"

@interface SettingsController : IASKAppSettingsViewController <IASKSettingsDelegate>
- (void)settingsViewControllerDidEnd:(IASKAppSettingsViewController*)sender;
@end

设置控制器.m

...
@implementation SettingsController
...
- (void)viewDidLoad
{
    [super viewDidLoad];
    self.delegate = self;
    self.showDoneButton = YES;
}
- (void)settingsViewControllerDidEnd:(IASKAppSettingsViewController*)sender {
    // reconfigure code here
}
@end

所以基本上,我没有使用情节提要建立任何委托连接。<IASKSettingsDelegate>我必须在控制器中编写,并self.delegate = self;在 viewDidLoad 方法中使用。

问题是要使重新配置工作,我需要主视图控制器作为委托(而不是设置控制器)。我无法做到这一点。有什么帮助吗?

第二次尝试: 好的,现在我尝试使用:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([[segue identifier] isEqualToString:@"settingsSegue"])
    {
        [[segue destinationViewController] setDelegate:self];
    }
}

但它不起作用。我相信这是因为destinationViewController 是storyboard 中的一个navigationController,它会立即显示设置所在的table view controller。

于 2012-11-28T11:52:46.913 回答