2015-12-15 67 views
-1

以下是代码。我试图让按钮做不同的事情,只要在UIPickerView选择的东西。使用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; 
      } 


    } 
+0

如果我没有弄错,这段代码会给你一个解析错误。 – Ares

+0

@Ares你能帮我解决这个错误吗 –

+1

为什么你不能更新你以前的问题?没有理由发布一个新问题。 – rmaddy

回答

1

你的问题根本不清楚,但我会反正说它一枪。 我想你混淆了两两件事:

  1. 什么的协议是
  2. 如何使一个协议的呼叫。

一个你按下按钮,你(可能)调用一个IBAction。 当你在一个pickerView中选择一行时,你触发了一个事件,这个事件被代理挑选出来,并且用它做了一些事情。

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

-(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];

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

+0

我正在尝试制作一款鱼重秤类型的应用程序,其中您有长度和周长,并计算重量。有些物种有不同的方程,所以我试图改变这个方程。 –

+0

看看我上面的评论 –

+0

那么,为什么你从textField中获取值而不是pickerView中的选定行? – Ares

相关问题