Я использовал [self.view viewWithTag]
для ссылки на объекты в UIViewController. Затем я переместил конкретное подпредставление в новый UIViewController, затем добавил его в качестве дочернего контроллера представления и добавил представление в качестве подпредставления. Однако теперь я не могу использовать viewWithTag
в контроллере дочернего представления для доступа к различным объектам. Каждый раз объект, полученный с помощью viewWithTag
, равен нулю.
Я не думаю, что неправильно использую viewWithTag, так как он работал нормально до того, как я переместил это представление в новый контроллер представления. Одним из решений является просто создание свойств для каждого из представлений, на которые я ссылаюсь, с помощью viewWithTag
, но я не думаю, что это хороший способ. Есть ли лучшее решение? Почему это происходит?
Изменить в соответствии с запросом:
Вот как я добавляю дочерний контроллер представления:
self.runeTable = [RuneTableViewController new];
[self addChildViewController:self.runeTable];
self.runeTable.view.frame = CGRectMake(screenshotWidth + 32, navBarHeight, self.view.frame.size.width-screenshotWidth-32.0, self.view.frame.size.height-navBarHeight);
[self.view addSubview:self.runeTable.view];
Вот код создания кнопки:
UIButton *updateButton = [UIButton buttonWithType:UIButtonTypeCustom];
updateButton.tag = 5;
[updateButton setTitleColor:HIGHLIGHT_COLOR forState:UIControlStateNormal];
[updateButton.titleLabel setFont:FONT_MED_LARGE_BOLD];
[updateButton setTitle:@"Update" forState:UIControlStateNormal];
updateButton.frame = CGRectMake(283, 280-60, 100, 60);
[detailInnerView addSubview:updateButton];
И вот каким-то другим методом я пытаюсь получить и добавить цель к этой кнопке:
UIButton *updateButton = (UIButton *)[self.view viewWithTag:5];
[updateButton addTarget:self action:@selector(updateCurrentDictionaryWithRuneInfo) forControlEvents:UIControlEventTouchUpInside];
Когда я добавил точку останова и po updateButton
, он вернулся как ноль. То же самое произошло с другими элементами пользовательского интерфейса в контроллере представления, которые я также пытался получить таким же образом.
self
в данном контекстеUIButton *updateButton = (UIButton *)[self.view viewWithTag:5];
? - person oyvindhauge   schedule 27.10.2015po self
возвращает экземпляр дочернего контроллера представления,RuneTableViewController
. - person Charles   schedule 27.10.2015