Я делаю сегмент калькулятора химии в приложении, над которым я работаю, и я не могу получить данные, и я не могу получить информацию, чтобы правильно заполнить экран. Есть второстепенная проблема, выравнивание, и если кто-то может мне помочь, я бы очень признателен, но это не основное внимание в этом вопросе - я сделаю для вас специальную тему.Данные из DetailViewController не отображаются
Итак, я перейду к тому, что хочу, и что я пробовал. Я пытаюсь сделать калькулятор химии, в зависимости от того, какое уравнение выбрано, UIStepper max/min.Value изменен, чтобы включить все возможные определения этого уравнения, а также определенные UILabels и UITextFields, показанные/скрытые.
Я подтвердил, что у меня есть данные, переданные из MasterViewController, поскольку я установил данные в NSString с именем _equation и успешно использовал _equation, чтобы изменить заголовок DetailViewController под self.title в viewDidLoad.
Я попытался разместить и инициализировать все свойства UIStepper соответствующим образом под гнездом if/if else под viewDidLoad (который также квантует возможные значения _equationName для целого числа (eqNum), чтобы он мог использоваться в инструкции switch). Я также попытался помещать скрытые свойства UITextField в viewDidLoad, но безрезультатно.
Так что без дальнейших церемоний, давайте перейдем к коду. Я усеченный код к одному уравнению, так что вы можете увидеть, что происходит здесь проще - обратите внимание, что это вложен под IBAction для кнопки Calculate:
// Take _equationName quantization and use it in a switch case to determine the formula that IBAction will use:
if (dflt)
{
switch (eqNum)
{
case 1:
if ((stepper.value = 1))
{
// Change deriv_units appropriately:
deriv_units.text = @"Energy (Joules)";
// This is a Planck's constant calculation, we hide the second variable as the constant
// is stored:
value2.hidden = YES;
value2_type.hidden = YES;
// Now we set up the parameters of the first entry variable:
value1_type.text = @"Frequency (in Hz)";
double frequency = [value1.text doubleValue];
double Planck = 6.626069e-34;
double energy = Planck * frequency;
// Now we set up the return field to return results:
NSString* resultIntermediate = [NSString stringWithFormat:@"%f", energy];
result.text = resultIntermediate;
units.text = @"J";
}
и последующего кода под viewDidLoad:
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
[self configureView];
self.title = _equationName;
int eqNum;
if ((_equationName = @"Energy-Frequency Relation"))
{
eqNum = 1;
// Set stepper bounds for derivation:
[stepper setMinimumValue:1];
[stepper setMaximumValue:3];
self.stepper.stepValue = 1;
self.stepper.wraps = NO;
self.stepper.autorepeat = NO;
self.stepper.continuous = YES;
// This is primarily a two-variable equation, so hide UITextView and UILabel #3:
value3.hidden = YES;
value3_type.hidden = YES;
}
(Реквизит для тех, кто признает это - это отношение Планка: D)
Вот что графический интерфейс должен выглядеть (как он появляется в раскадровку):
Вот что он выходит глядя, как в IOS Simulator:
Обратите внимание на выпуск перекос, который не является принципиальным вопросом в игре здесь. Также обратите внимание, что прямо сейчас оператор switch для параметров уравнения находится под , если дерево, которое проверяет, возвращает ли dflt (логическая переменная, присвоенная UISwitch) true для вычислений с двойной точностью. Однако при включении переключателя проблема не исправляется.
Вот еще более полное объяснение:
- значение # .text это число вошел в одну из трех UITextFields, от верха до низа.
- value # _type - текст, который будет отображаться в соответствующей UILabel.
- deriv_units - это UILabel под символом «Деривационные единицы» и используется для отображения того, какой вывод уравнения был выбран с использованием UIStepper.
- Внизу: самый правый UILabel - это результат , а самый левый - единиц.
Большое спасибо всем, кто может помочь этому начинающуюся проявитель по пути праведности программирования.
Попробуйте использовать контрольные точки, чтобы убедиться, что ваши кнопки и переключатели выполняют то, что вы ожидаете от них. – Joride