Как вызвать функцию при нажатии кнопки из источника данных?Objective-C - PullRequest
0 голосов
/ 01 сентября 2011

Моя проблема кажется простой, но я не могу получить ответ. У меня есть UiSwitch, созданный в моем подклассе TableItemCell, и я хочу, чтобы он вызывал функцию (в моем случае - отклонить) из моего настольного контроллера, который является агентом.

Как мне получить доступ к этой функции из моего подкласса TableItemCell?

Это мой код:

@implementation CCSettingsTableItemCell
@synthesize idSetting;

//Overriding cell
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString*)identifier {
    if ((self = [super initWithStyle:UITableViewCellStyleValue2 reuseIdentifier:identifier])) {
        switchView = [[UISwitch alloc] initWithFrame:CGRectZero];
        self.accessoryView = switchView;
        [switchView addTarget:self action:@selector(switchChanged:) forControlEvents:UIControlEventValueChanged];
        [switchView release];
    }
    return self;
}

- (void) switchChanged:(id)sender {
    UISwitch* switchControl = sender;

    /////////////////////////////////////////////////////////
    //Here i want to call my function from my main controller

}

А мой основной код контроллера такой:

@implementation SettingController

///////////////////////////////////////////////////////////////////////////////////////////////////
// private

// This is the function i want to call
- (void)dismiss {
    [self dismissModalViewControllerAnimated:YES];
}

///////////////////////////////////////////////////////////////////////////////////////////////////
// NSObject

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
    random code;
}

///////////////////////////////////////////////////////////////////////////////////////////////////
// TTTableViewController

- (void)loadView {
    random code;
}

- (void)createModel {
    self.dataSource = [SettingControllerDataSource viewDataSource];

    // If dataSource nil, show an empty Message
    if (self.dataSource == nil) {
        [self showEmpty:YES];
    }
}

@end

Уточнение: источник данных добавляет объект моего пользовательского типа CCSettingsTableItem

Любая помощь или подсказки были бы великолепны!

1 Ответ

0 голосов
/ 01 сентября 2011
  1. Вы можете использовать @protocol, который объявляет ваш метод "dismiss", который реализован вашим SettingController.Соответствует классу SettingController для CCSettingsTableItemCell.

  2. В противном случае создайте объект SettingController в файле .h файла CCSettingsTableItemCell.Используйте этот объект для вызова метода "dismiss".

...