Невозможно установить заголовок ViewController в методе Delegate - PullRequest
0 голосов
/ 06 октября 2011

Я реализовал команду optionTable, в которой хранится список параметров для моего приложения для выполнения

Я определил метод протокола в таблице параметров, чтобы основная таблица знала, когда пользователь выбрал параметр

//Protocol defined in **OPTIONSTABLEVIEW**
@protocol OptionsTableDelegate <NSObject>

-(void)didSelectOption:(NSString *)option withtitleString:(NSString*)titleString;

@end

//Set the delegate property
@interface OptionsTableView : UITableView <UITableViewDataSource,UITableViewDelegate>
{
    id optionTableDelegate;
}

@end

Этот метод делегата запускается после того, как пользователь выбирает параметр в обзоре параметров таблицы

//User selects an option and the delegate method is triggered
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    switch (indexPath.row) 
    {
        case OPTION_LATEST:
            self.option = @"for_you";
            self.titleString = [self.optionsArray objectAtIndex:OPTION_LATEST];
            break;

        case OPTION_RANDOM:
            self.option = @"random";
            self.titleString = [self.optionsArray objectAtIndex:OPTION_RANDOM];
            break;

        default:
            break;
    }

//Delegate method triggered to return the option and title string to the main table
[self.optionTableDelegate didSelectOption:self.option withtitleString:self.titleString];
}

В основной таблице (таблица параметров вызова) я настраиваю делегата таблицы параметров в self и также включаюметод делегата

//Main table **QUESTIONTABLEVIEWCONTROLLER**
- (void)viewDidLoad
{
    [super viewDidLoad];

    //Set up options tableview
    self.optionsTableHeight = 24 + (44*2);
    CGRect optionsTableFrame = CGRectMake(0, -optionsTableHeight, 320, optionsTableHeight);
    OptionsTableView *tempOptionsTable = [[OptionsTableView alloc]initWithFrame:optionsTableFrame style:UITableViewStyleGrouped];
    self.optionsTableView = tempOptionsTable;

    //Setting the delegate to self
    self.optionsTableView.optionTableDelegate = self;

    [self.view addSubview:self.optionsTableView];
}

И я попытался установить заголовок страницы в методе делегата главной таблицы

//Delegate method in main table
-(void)didSelectOption:(NSString *)option withtitleString:(NSString *)titleString
{
    //Set title here (doesn't work)
    self.title = titleString;
    NSLog(@"title :%@",self.title);
    self.type = option;

    [self.optionsTableView slideOptionsTableOut];

    [self getData];

}

Название моей страницы не изменилось вышеметод делегата.Любой совет, как я могу изменить заголовок после выбора параметра в таблице параметров?

Ответы [ 2 ]

0 голосов
/ 28 августа 2013

Вы можете использовать [self.navigationItem setTitle:@"Your Title"]; обновить заголовок вашего navBar.

0 голосов
/ 06 октября 2011

Попробуйте сделать одно из двух:

1) Заменить [self.optionTableDelegate didSelectOption:self.option withtitleString:self.titleString]; на [self didSelectOption:self.option withtitleString:self.titleString];

2) Заменить self.optionsTableView.optionTableDelegate = self; на self.optionTableDelegate = self;

...