2010-08-09 41 views
1

我想知道将我在objective-c中的这个简单控制台程序连接到非常简单的iPhone应用程序是否可行。将极其基本的objective-c程序连接到iPhone应用程序

因为我没有使用Interface Builder的经验,所以我不确定需要多长时间来学习它。

此外,我相信我的代码必须调整到一些iPhone API,而不是使用控制台进行输入和输出。

下面是该程序的main.m文件,所有的代码都是商店:

//Simple program to convert Fahrenheit to Celsius and Celsius to Fahrenheit 

#import <stdio.h> 

@interface Converter: NSObject 
{ 
//Instance variable which stores converting formula for objects 
double formula; 
} 

//Declare instance methods for setting and getting instance variables 
-(void) convert: (double) expression; 
-(double) formula; 

@end 


@implementation Converter; 

//Define instance method to set the argument (expression) equal to the instance variable 
-(void) convert: (double) expression 
{ 
formula = expression; 
} 

//Define instance method for returning instance variable, formula 
-(double) formula 
{ 
return formula; 
} 

@end 

int main (int argc, char *argv[]) 
{ 

//Point two new objects, one for the Fahrenheit conversions and the other for the Celsius conversions, to the Converter class 
Converter *fahrenheitConversion = [[Converter alloc] init]; 
Converter *celsiusConversion = [[Converter alloc] init]; 

//Declare two double variables holding the user-inputted data, and one integer variable for the if else statement 
double fahrenheit, celsius; 
int prompt; 

NSLog(@"Please press 0 to convert Celsius to Fahrenheit, or 1 to convert Fahrenheit to Celsius\n "); 
scanf("%d", &prompt); 
if(prompt == 0) { 
    NSLog(@"Please enter a temperature in Celsius to be converted into Fahrenheit!:\n"); 
    scanf("%lf", &celsius); 
    if(celsius < -273.15) { 
     NSLog(@"It is impossible to convert temperatures less than −273.15 degrees Celsius, because this is absolute zero, the coldest possible temperature."); 
    } 
    else { 
     [fahrenheitConversion convert: (((((celsius)*9)/5)+32))]; 
     NSLog(@"%lf degrees Celsius is %lf Fahrenheit", celsius, [fahrenheitConversion formula]); 
    } 
} 

else { 
    NSLog(@"Please enter a temperature in Fahrenheit to be converted into Celsius!:\n"); 
    scanf("%lf", &fahrenheit); 
    if(fahrenheit < -459.67) { 
     NSLog(@"It is impossible to convert temperatures less than −459.67 degrees Fahrenheit, because this is absolute zero, the coldest possible temperature."); 
    } 
    else { 
     [celsiusConversion convert: ((((fahrenheit - 32)/9)*5))]; 
     NSLog(@"%lf degrees Fahrenheit is %lf Celsius", fahrenheit, [celsiusConversion formula]); 
    } 
} 

return 0; 
} 
+1

你可以,但你必须使用IB创建布局和定义IBActions这将基本上是你在这里定义的方法。 – 2010-08-09 18:44:43

+0

只是想知道,我是否会在类型为Utility的iPhone下创建一个新的应用程序,在我看来它就像一个窗口小部件应用程序,它具有主屏幕,然后您可以将其翻转到另一侧以查看一些内容信息。 – Qcom 2010-08-09 18:51:14

回答

4

这个怎么样?

我试图不要更改您的代码太多。它使用你原来的公式和转换器类,尽管我很想改变它。

截图:

alt text http://brockwoolf.com/shares/stackoverflow/3443063/tempcalc-iphone.png

源代码:

视图控制器接口:

#import <UIKit/UIKit.h> 

@interface TempCalc_iPhoneViewController : UIViewController { 

    UITextField *celciusTextField; 
    UITextField *fahrenheitTextField; 
    UILabel  *statusLabel; 

    double minFahrenheit; 
    double minCelcius; 

    NSString *normalStatus; 
    NSString *belowFahrenheitMessage; 
    NSString *belowCelciusMessage; 
} 

@property (nonatomic,retain) IBOutlet UITextField *celciusTextField; 
@property (nonatomic,retain) IBOutlet UITextField *fahrenheitTextField; 
@property (nonatomic,retain) IBOutlet UILabel *statusLabel; 

- (IBAction) convertCelciusToFahrenheit:(UITextField*)sender; 
- (IBAction) convertFahrenheitToCelcius:(UITextField*)sender; 

@end 

视图控制器实现

#import "TempCalc_iPhoneViewController.h" 
#import "Converter.h" 

@implementation TempCalc_iPhoneViewController 

@synthesize celciusTextField, fahrenheitTextField, statusLabel; 

// Implement viewDidLoad to do additional setup after loading the view, typically from a nib. 
- (void)viewDidLoad { 
    [super viewDidLoad]; 

    minCelcius = -273.15; 
    minFahrenheit = -459.67; 

    normalStatus = @"Please type to convert temperature"; 
    belowFahrenheitMessage = @"impossible to convert temperatures less than −459.67 degrees Fahrenheit"; 
    belowCelciusMessage = @"impossible to convert temperatures less than −273.15 degrees Celsius"; 
} 

// Delegate method 
- (BOOL)textFieldShouldReturn:(UITextField *)theTextField 
{ 
    NSLog(@"User pressed the DONE button on the keyboard (any keyboard!)"); 
    [theTextField resignFirstResponder]; 
    return YES; 
} 

- (IBAction) convertCelciusToFahrenheit:(UITextField*)sender 
{ 
    Converter *celciusConversion = [[Converter alloc] init]; 
    double celcius = [sender.text doubleValue]; 

    if(celcius < minCelcius) { 
     NSLog(@"It is impossible to convert temperatures less than −273.15 degrees Celsius, because this is absolute zero, the coldest possible temperature."); 
     self.statusLabel.text = belowCelciusMessage; 
    } 
    else 
    { 
     [celciusConversion convert: ((((celcius)*9)/5)+32)]; 
     NSString *fahrenheitValue = [NSString stringWithFormat:@"%lf", [celciusConversion formula]]; 
     NSLog(@"%lf degrees Celsius is %@ Fahrenheit", celcius, fahrenheitValue); 
     self.fahrenheitTextField.text = fahrenheitValue; 
     self.statusLabel.text = normalStatus; 
    } 

    [celciusConversion release]; 
} 

- (IBAction) convertFahrenheitToCelcius:(UITextField*)sender 
{ 
    Converter *fahrenheitConversion = [[Converter alloc] init]; 
    double fahrenheit = [sender.text doubleValue]; 

    if(fahrenheit < minFahrenheit) { 
     NSLog(@"It is impossible to convert temperatures less than −459.67 degrees Fahrenheit, because this is absolute zero, the coldest possible temperature."); 
     self.statusLabel.text = belowFahrenheitMessage; 
    } 
    else { 
     [fahrenheitConversion convert: (((fahrenheit - 32)/9)*5)]; 
     NSString *celciusValue = [NSString stringWithFormat:@"%lf", [fahrenheitConversion formula]]; 
     NSLog(@"%lf degrees Fahrenheit is %@ Celsius", fahrenheit, celciusValue); 
     self.celciusTextField.text = celciusValue; 
     self.statusLabel.text = normalStatus; } 

    [fahrenheitConversion release]; 
} 
+2

哇!非常感谢你!所以它看起来像你唯一需要弄乱的文件是ViewController接口和实现文件?实际上有相当多的代码在那里你不得不写:)再次感谢你,我真的从中学到很多东西! – Qcom 2010-08-09 20:31:52

+1

当然没问题。开心iPhone编码:) – 2010-08-09 20:32:51

+1

是的。我添加代码的唯一文件是ViewController.h和.m文件。 IBOutlets和IBActions在Interface Builder中连接 – 2010-08-09 20:44:40

1

移植应该是很简单的。 Apple提供了一些很好的示例应用你最快的成功之路可能是下载一个简单的文本框+按钮样本并添加你的计算。不包括下载和安装所需的时间将在1-2个小时内完成。

祝你好运!

+0

嘿谢谢!希望我能在这段时间内做到这一点:) – Qcom 2010-08-09 19:24:37

相关问题