我正在我正在开发的应用程序中制作化学计算器部分,但我无法获取数据,也无法获取正确填充屏幕的信息。还有一个次要问题,对齐,如果有人可以帮助我,我将不胜感激,但这不是这个问题的主要焦点——我会为此专门讨论一个话题。
所以我会回顾一下我想做的事情,以及我尝试过的事情。我要做的是制作一个化学计算器,根据选择的方程式,修改 UIStepper max/min.Value 以包括该方程式的所有可能推导,以及显示/隐藏的某些 UILabel 和 UITextFields。
我已经确认我已经从 MasterViewController 传递了数据,因为我已经将数据设置为一个名为 _equation 的 NSString,并成功地使用 _equation 修改了 viewDidLoad 中 self.title 下的 DetailViewController 的标题。
我尝试在 viewDidLoad 下的 if/if else 嵌套下适当地放置和初始化所有 UIStepper 属性(它还将 _equationName 可能值量化为整数(eqNum),以便它可以在 switch 语句中使用)。我还尝试将 UITextField 隐藏属性放在 viewDidLoad 下,但无济于事。
因此,事不宜迟,让我们进入代码。我已将代码截断为一个等式,以便您可以更轻松地看到这里发生了什么 - 请注意,它嵌套在计算按钮的 IBAction 下:
// 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)
以下是 GUI 的外观(在 Storyboard 中显示):
这是它在 iOS 模拟器中的样子:
注意错位问题,这不是这里的主要问题。另请注意,现在,方程参数的 switch 语句位于if树下,用于检查 dflt(分配给 UISwitch 的布尔变量)是否为双精度计算返回 true。但是,在将开关切换到 ON 时,问题不正确。
这里有一个更完整的解释:
- value#.text 是在三个 UITextField 之一中输入的数字,从上到下。
- value#_type 是要在相应的 UILabel 中显示的文本。
- deriv_units 是标记为“Derivation Units”的 UILabel,用于显示使用 UIStepper 选择了方程的哪个推导。
- 在底部:最右边的 UILabel 是结果标签,而最左边的是单位标签。
非常感谢任何可以帮助这个初级开发人员走上编程正义之路的人。