Как использовать делегата InAppSettingsKit для перенастройки измененных параметров приложения

Я использую InAppSettingsKit для включения настроек в свое приложение. Я настроил представление настроек с помощью раскадровки xcode, выполнив следующие простые шаги:

1) Я создал контроллер навигации и контроллер представления таблицы
2) В контроллере таблицы я использовал пользовательский класс: IASKAppSettingsViewController в качестве контроллера.

Все работает так, как ожидалось, НО теперь я пытаюсь перенастроить приложение, чтобы настройки, которые изменил пользователь, вступили в силу после выхода из экрана настроек.

В одном учебнике, который я нашел, говорится, что я должен:

Создайте делегата, соответствующего протоколу IASKSettingsDelegate. В текущей версии -settingsViewControllerDidEnd: является единственным обязательным методом.

поэтому делегат должен иметь такой метод, как:

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

Как я могу создать этого делегата? Я не знаю, куда деть этот метод. В инспекторе подключения раскадровки я вижу, что для делегата есть место, но я не смог его подключить. Пожалуйста, помогите мне понять это, потому что я прочитал множество руководств, объясняющих делегатов, и они меня еще больше запутали. Мне просто нужны простые шаги, как создать делегата и подключить его к контроллеру, который я создал в раскадровке.

Спасибо!


person F. A    schedule 26.11.2012    source источник


Ответы (1)


Я добился некоторых успехов (но есть одна проблема). Вот что я сделал:

Вместо того, чтобы использовать IASKAppSettingsViewController в качестве класса моего контроллера, я создал другой класс, наследуемый от IASKAppSettingsViewController. Я назвал его SettingsController

НастройкиКонтроллер.h

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

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

НастройкиController.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 является навигационным контроллером в раскадровке, который сразу же отображает контроллер табличного представления, где находятся настройки.

person F. A    schedule 28.11.2012