繁体   English   中英

来自DetailViewController的数据未显示

[英]Data from DetailViewController not displaying

我正在使用一个正在使用的应用程序进行化学计算器细分,但是我无法获取数据,也无法获取信息以正确填充屏幕。 还有一个第二个问题,即一致性,如果有人可以帮助我,我将不胜感激,但这不是这个问题的主要重点-我将为此专门讨论一个主题。

因此,我将介绍我想做的事情和尝试过的事情。 我要做的是制作一个化学计算器,根据选择的方程式,修改UIStepper的最大值/最小值。值修改为包括该方程式的所有可能推导以及某些显示/隐藏的UILabel和UITextFields。

我已经确认我已经将数据从MasterViewController传递下来,因为我已经将数据设置为名为_equation的NSString,并成功使用_equation修改了viewDidLoad中self.title下的DetailViewController的标题。

我尝试在viewDidLoad下的if / if else嵌套下适当地放置和初始化所有UIStepper属性(它还将_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)

这是GUI的外观(如出现在Storyboard中): 在此处输入图片说明

这是在iOS模拟器中显示的内容: 在此处输入图片说明

请注意未对准问题,这不是这里发生的主要问题。 还要注意,现在,方程式参数的switch语句位于if树下,该树检查以查看dflt(分配给UISwitch的布尔变量)是否对双精度计算返回true。 但是,将开关拨到ON位置后,此问题无法解决。

这里是一个更完整的解释:

  • value#.text是从顶部到底部在三个UITextField之一中输入的数字。
  • value#_type是要在相应的UILabel中显示的文本。
  • deriv_units是UILabel下方的一个标记为“ Derivation Units”的元素,用于显示已使用UIStepper选择方程式的哪个导数。
  • 在底部:最右边的UILabel是结果标签,而最左边的是单位标签。

非常感谢能够在编程正义道路上帮助这名新手开发人员的任何人。

关于对齐问题:在3.5英寸屏幕上运行时,好像正在为4英寸屏幕创建情节提要。 在右下角的情节提要中,有一些小按钮,其中一个按钮可让您在4“或3.5”的显示之间即时切换。

您确定控件已连接到代码吗?

- (void) viewDidAppear: (BOOL) animated{
    [super viewDidAppear: animated];
    // some rude NSAsserts, but let's be sure
    NSAssert(value1_type != nil, @"Your control element is nil, it might not be hooked up");
    // you should now see this text in the textfield
    value1_type.text = @"Frequency (in Hz)";

    NSAssert(result != nil, @"Your control element is nil, it might not be hooked up");
    result.text = @"some test text";

    NSAssert(units != nil, @"Your control element is nil, it might not be hooked up");
    units.text = @"J";
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM