UISwitch в пользовательском UITableViewCell, не доступном

Для разъяснения системные переменные совпадают с переменными среды. Переменные пользовательской среды установлены на пользователя и отличаются каждый раз, когда другой пользователь входит в систему. Переменные среды в масштабе всей системы являются тем же, какой пользователь входит в систему.

Для доступа к или текущему значению переменной в масштабе всей системы или к пользовательской переменной в Java посмотрите ниже:

String javaHome = System.getenv("JAVA_HOME");

Для получения дополнительной информации о переменных среды видят этот , страница .

Википедии Также удостоверяется переменная среды, которую Вы пытаетесь считать, правильно установлен прежде, чем вызов Java путем выполнения a:

echo %MYENVVAR%

необходимо видеть значение переменной среды. В противном случае Вы, возможно, должны вновь открыть оболочку (DOS) или выйти из системы и войти на.

10
задан Alex Reynolds 24 August 2009 в 15:13
поделиться

3 ответа

Я сделал это некоторое время назад. Вы должны изменить свой селектор

[self.keychainSwitch addTarget:self action:@selector(keychainOptionSwitched:) forControlEvents:UIControlEventValueChanged];

А затем обновить свой метод до

-(void) keychainOptionSwitched:(id)sender {
UISwitch *tempSwitch = (UISwitch *)sender;
}

Теперь tempSwitch - это переключатель, который был изменен.

5
ответ дан 3 December 2019 в 13:12
поделиться

Я целую вечность возился с пользовательскими UITableViewCells с простой меткой и включал ее, прежде чем обнаружил, что могу просто добавить UISwitch в качестве дополнительного представления . Вы, вероятно, в любом случае знаете об этом и хотите использовать пользовательскую ячейку по другим причинам, но на всякий случай я хотел бы упомянуть об этом!

Вы делаете это следующим образом (в методе -tableView: cellForRowAtIndexPath):

UISwitch *mySwitch = [[[UISwitch alloc] initWithFrame:CGRectZero] autorelease];
cell.accessoryView = mySwitch;

Бит accessoryView также заботится о размере и позиционировании, чтобы мы могли обойтись без CGRectZero.

Затем вы можете использовать событие системного управления и метод setOn следующим образом (обратите внимание, что мы приводим его как указатель UISwitch, который нам известен. is):

[(UISwitch *)cell.accessoryView setOn:YES];   // Or NO, obviously!
[(UISwitch *)cell.accessoryView addTarget:self action:@selector(mySelector)
     forControlEvents:UIControlEventValueChanged];

Надеюсь, это поможет!

70
ответ дан 3 December 2019 в 13:12
поделиться

I think whats happening here is that you are trying to invoke the operation when the cell is out of view, so whats going on is that the cell is unloaded at that time therefore you are getting a nil for the keychain switch, once it comes into view then its no longer nil since its reloaded. But i see that you are assigning the switch like so

 self.keychainSwitch = [(RootLabeledSwitchTableCell *)cell labeledSwitch];

Its a reference to the switch in the table cell and you are not retaining it, so it makes since that the switch is becoming nil since , when the cell goes out of view is unloaded and keychainSwitch is becoming nil as a result and therefore your class member is becoming nil as well. You might want to retain keychainSwitch and then when reconstructing your table c ell get the switch out of keychainSwitch, or something of the sort. Hope this helps

0
ответ дан 3 December 2019 в 13:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: