【问题标题】:Using a UIPickerView and changing what a button does [duplicate]使用 UIPickerView 并更改按钮的作用 [重复]
【发布时间】:2015-12-15 01:14:16
【问题描述】:

这里是代码。只要选择UIPickerview中的某些东西,我正在尝试使按钮做不同的事情。

 -(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
    switch(Striped Bass)
    //Striped Bass
    {
            - (IBAction)calculateButtonPressed:(id)sender {
                NSLog(@"Calculate Pressed");

                float girth = [[self.girthTextField text] floatValue];
                float length = [[self.lengthTextField text] floatValue];

                NSLog(@"girth: %f length: %f", girth, length);

                float weight = girth * girth * length / 800;
                NSLog(@"Weight: %f", weight);

                NSString *weightText = [NSString stringWithFormat:@"%f", weight];

                self.weightTextField.text = weightText;
            }


    }

【问题讨论】:

  • 如果我没记错的话,这段代码会给你一个解析错误。
  • @Ares 你能帮我解决这个错误吗
  • 为什么不能更新你之前的问题?没有理由发布新问题。

标签: ios objective-c uibutton uipickerview


【解决方案1】:

您的问题根本不清楚,但无论如何我都会试一试。 我认为您对两件事感到困惑:

  1. 什么是协议
  2. 如何调用协议。

你按下一个按钮,你(可能)调用一个 IBAction。 当您在 pickerView 中选择一行时,您会触发一个事件,该事件由委托选择,并对其进行处理。

因此,在您的代码中,您在另一个方法中定义了一个方法。这是不可能的。 IBAction 需要在didSelectRow 的定义之外定义。如果您确实需要运行该操作,则需要手动调用它。所以你的代码应该看起来更像这样:

-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
        {
            switch(Striped Bass)
            //Striped Bass

            [self calculateButtonPressed:pickerView];
        }

- (IBAction)calculateButtonPressed:(id)sender {
        NSLog(@"Calculate Pressed");

       float girth = [[self.girthTextField text] floatValue];
       float length = [[self.lengthTextField text] floatValue];

       NSLog(@"girth: %f length: %f", girth, length);

       float weight = girth * girth * length / 800;
       NSLog(@"Weight: %f", weight);

       NSString *weightText = [NSString stringWithFormat:@"%f", weight];

       self.weightTextField.text = weightText;
}

现在,对我来说没有意义的是,您根本没有使用方法中选定的行来根据选定的 pickerView 执行某些操作。

  1. 协议是对象响应的方法列表。
  2. 当您想调用它们时,您可以执行 [myObject nameOfMethod];

无论如何,希望对您有所帮助。

【讨论】:

  • 我正在尝试制作一个鱼秤类型的应用程序,其中你有长度和周长,它会计算重量。有些物种的方程式与其他物种不同,所以我试图改变这个方程式。
  • 看我上面的评论
  • 那么,为什么要从 textField 中获取值,而不是从 pickerView 中的选定行中获取值?
  • 因为我需要这些值来找到重量。我正在尝试在 AppStore 上制作一个与 Scott Kehrberg 的 FishCalcLite 完全一样的应用程序。我只是为了好玩。该应用程序小而免费。我你可以下载它,看看它会有所帮助。
  • 看上面我刚刚发表的评论
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-15
  • 2020-04-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-11
相关资源
最近更新 更多