Доступ к UISegmentedcontrol selectedIndex - когда он содержится в кнопке UIB, содержащейся в UINavigationController.toolbar - PullRequest
1 голос
/ 19 июля 2010

В настоящее время я программно добавляю UISegmentedControl к панели инструментов в контроллере навигации (как показано ниже).

Этот подход работает нормально, у меня есть UISegmentedControl, он запускает селектор, который у меня естьНастройка без проблем.

Проблема в том, что я хотел бы использовать selectedIndex этого элемента управления для запроса моей модели данных и представления другого представления данных для каждого «сегмента» - но у меня возникли проблемыполучение selectedIndex.

В своих путешествиях я консультировался с примером кода «Лучшие песни», предоставленным Apple.В этом коде они строят свой интерфейс через объект UISegmentedControl в контроллере представления и IB.При этом они могут получить доступ к UISegmentedControl selectedIndex.Я добавляю свою программу программно и у меня нет этой свободы.

'ДОЛЖЕН' У меня есть UISegmentedControl, определенный в моем контроллере представления?Если это так, если я хочу продолжить программирование своего меню программно, как мне получить доступ к информации из элемента управления, скрытого в навигационном контроллере UIToolBar?

Я явно упускаю что-то базовое.Любая помощь всегда ценится:)

[self.navigationController setToolbarHidden:NO];

// Set up the edit and add buttons.
self.navigationItem.leftBarButtonItem = self.editButtonItem;

UIBarButtonItem *addButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(insertNewObject)];
self.navigationItem.rightBarButtonItem = addButton;
[addButton release];

NSArray *tabitems = [NSArray arrayWithObjects:@"ONE", @"TWO", @"THREE", @"FOUR", nil];
UISegmentedControl *tabs = [[UISegmentedControl alloc] initWithItems:tabitems];

[tabs addTarget:self
    action:@selector(pickedSegment:)
    forControlEvents:UIControlEventValueChanged];

tabs.segmentedControlStyle = UISegmentedControlStyleBar;
tabs.frame = CGRectMake(60, 8, 180, 30);
tabs.selectedSegmentIndex = 0;
//[self.navigationController.navigationBar addSubview:tabs];
[self.navigationController.toolbar addSubview:tabs];
[tabs release];

1 Ответ

1 голос
/ 19 июля 2010

Вам необходимо указать tabs в вашем файле .h -

@interface YourViewController : UIViewController
    ....
    UISementedControl *tabs;
    ....
@end
....
@property (nonatomic, retain) UISegmentedControl *tabs;

Затем, после строки [tabs release];, вы все равно сможете получить доступ к объекту, так как это сохраняемое свойство - доступ к selectedItemIndex как обычно.

...