0

我是 Objective-C 和 Xcode 的新手。

我做了第一个程序“Hello Word”,现在我想将“hello word”消息更改为另一条消息。这是我的代码中的示例:

。H

#import <UIKit/UIKit.h>    
@interface ViewController : UIViewController {

 IBOutlet UILabel * label;
 IBOutlet UIButton * boton;
 }
 -(IBAction)click:(id)sender;
 @end

.m

 #import "ViewController.h"

 @interface ViewController ()

 @end

 @implementation ViewController

 -(IBAction)click:(id)sender{
     label.text = @"hello Word" ;
     label.text = @"here is the second string"; 
      // i would like when i touch again the button to change to this string
 }
4

3 回答 3

1

如果你想在两者之间切换,你可以尝试条件

if ([label.text isEqualToString:@"hello World"]) {
     label.text = @"here is the second string";
} else {
   label.text = @"hello World";
}

注意 NSString equivalence 的测试isEqualToString:。更通用的形式isEqual:也可以,但如果您知道您正在处理 NSString 对象,则前者被认为更有效。

如果这不是您所追求的,那么您可以使用逻辑 - 例如

NSString* firstString = @"hello world";
NSString* secondString = @"here is the second string";

if ([label.text isEqualToString:firstString] 
{
     label.text = secondString;
} else if ([label.text isEqualToString:secondString] {
   return;
} else {
  label.text = firstString;
}

或者使用@HotLicks 建议的整数标志.. 有很多方法可以使用逻辑,但没有一种特定于objective-C。

于 2013-02-28T19:19:47.050 回答
0

一种方法是创建一个 NSMutableArray。一个更好的方法是有一个按钮和一个标签。当您按下按钮时,标签会显示您想要的文本。

这是您可以做到的最好方法:

.h 文件

@interface ViewController : UIViewController

{

int currentTextIndex;

// The model objects

NSMutableArray *text;

// The view objects

IBOutlet UILabel *labelName;

}

- (IBAction)showText:(id)sender;

.m 文件

@interface ViewController ()

@end

@implementation ViewController

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    // Call the init method implemented by the superclass
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
     text = [[NSMutableArray alloc] init];

// Add text to the arrays
    [text addObject:@"Whatever text you want in here];

    [text addObject:@"other text you want in here"];

}

return self;

- (IBAction)showText:(id)sender
{
    //Step to the next statement
    currentQuestionsIndex++;

    //Am I past the last statement?
    if (currentTextIndex == [text count])
    {

        //Go back to the first statement
        currentTextIndex = 0;
    }
//Get the string at that index in the text array
    NSString *statement = [text objectAtIndex:currentTextIndex];

    //Log the string to the console
    NSLog(@"displaying text: %@", text);

    //Display the string in the question field
    [labelName setText:question];


}

让我知道这个是否奏效?可能有点偏

于 2013-03-01T02:37:16.657 回答
0

这个答案是您问题的不同方法。下一步将插入一个文本字段、一个标签和一个按钮,因此当您按下按钮时,标签将随着文本字段的内容而改变。

将这些项目添加到您的视图中,将 Text Field 和 Label 声明为 Outlets,将 Button 声明为视图头文件 (iE ViewController.h) 中的 Action。然后在您的实现文件(ViewController.m)中:

 -(IBAction)myButton:(id)sender{
   [self updateLabel];
 }

-(void)updateLabel{
   _myLabel.text = _myTextField.text;
}

请注意,一旦键盘出现,您的“问题列表”可能会变长。我的意思是,一旦它显示出来,你需要隐藏它(也许)并在按下键盘上的“return”键时执行和操作,因为起初它什么都不做。

下面是一些实现“Return”键的代码:

//"Return" key
-(BOOL)textFieldShouldReturn:(UITextField *)textField{
   [_myTextField resignFirstResponder]; //This takes out the "focus" from the textfield
   [self updateLabel];
   return YES;
}

在这个答案中,您应该已经了解: - 如何设置标签的文本值 - 如何调用函数 - 如何为“返回”键设置操作

就是这样。快乐编码!

于 2015-09-09T16:04:38.493 回答