0

ユーザーがボタンをクリックするとテキストが別のものに切り替わり、もう一度クリックすると元に戻るテストアプリケーションを作成しようとしていますが、ユーザーが入力するセクションを追加できるようにしたいです/彼女の名前がそう言っているように、隠されたメッセージは次のとおりでした:または何でも...

私が持っているコードは次のとおりです。

- (void)viewDidLoad
{
[super viewDidLoad];
UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
//button.backgroundColor = [UIColor redColor];
button.titleLabel.textColor=[UIColor blackColor];
button.frame = CGRectMake(25, 100, 275, 60);
[button setTitle:@"Press this button to reveal the text!" forState:UIControlStateNormal];
[button addTarget:self action:@selector(button_method:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:button];
// Do any additional setup after loading the view, typically from a nib.
}

- (void)button_method:(UIButton *)button {
NSString *test = @"I am learning Objective-C for the very first time! Also, this is my first ever variable!";
// handle button press
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(25, 25, 275, 60)];
label.text = test;
label.numberOfLines = 0;
label.lineBreakMode = UILineBreakModeWordWrap;
//label.lineBreakMode = NSLineBreakByWordWrapping; //iOS 6 only
[self.view addSubview:label];
[button setTitle:@"You have pressed the button!" forState:UIControlStateNormal];
[button addTarget:self action:@selector(change_again:) forControlEvents:UIControlEventTouchUpInside];
}

- (void)change_again:(UIButton *)button {
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(25, 25, 275, 60)];
label.text = @"You have found the next piece of text!";
label.numberOfLines = 0;
label.lineBreakMode = UILineBreakModeWordWrap;
//label.lineBreakMode = NSLineBreakByWordWrapping; //iOS 6 only
[self.view addSubview:label];
[button setTitle:@"Keep pressing!" forState:UIControlStateNormal];
[button addTarget:self action:@selector(button_method:) forControlEvents:UIControlEventTouchUpInside];

}

- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}

これがあまりにもローカライズされていると見なされないことを願っています!

ムクマン

PS: 副次的な質問ですが、次のような文字列を作成するにはどうすればよいですか?NSString *var4 = var.var2.var3;

加入キャラは?JavaScript では+、PHP では.

4

3 に答える 3

3

おそらく @property を使用してテキスト入力を保存したいと思うでしょう。プロパティはインスタンス変数に似ていますが、ivar が取得 (get) または割り当て (set) されるたびに取得される getter と setter を追加することで、別の抽象化レイヤーを導入します。現時点では、すべての変数はメソッド内にのみ存在します。プロパティを使用すると、これらの変数にさまざまなメソッドからアクセスできます。クラッシュコースは次のとおりです。

プロパティは@interfaceセクションで宣言されます (他のクラスからアクセス可能なプロパティにはヘッダー ファイルを使用し、クラスからのみアクセス可能なプロパティにはメイン ファイルを使用します)。

    @property (strong, nonatomic) NSString *userInput;

この@implementationセクションでは、独自のゲッターとセッターを記述する必要があります。または、synthesize を使用してゲッターとセッターを自動的に作成することもできます。

    @synthesize userInput = _userInput;

ここから、プロパティを使用できます。

    //Assigning the property
    self.userInput = @"Some text";

    //Retrieving the property
    label.text = self.userInput;

プロパティについて詳しく知りたい場合は、Apple のドキュメントを参照してください。

プロパティについて最後に 1 つ: これらはインスタンス変数であるため、クラスのインスタンスに関連付けられているため、プログラムの起動間で保持されません。

テキスト入力の場合は、UITextField を試してください。

iOS のプログラミングを始めたばかりなら、iTunes U で Stanford の CS193p をお勧めします。彼はカスタム ゲッターを使用しており、レクチャー 2 で電卓アプリを作成するときに、カスタム ゲッターを作成する理由を説明していると思います。

于 2012-11-27T03:41:59.670 に答える
1

グローバル変数を使用する方法は 2 つあります。まず、ヘッダーまたは実装メソッドのいずれかの Interface セクションで、グローバル変数 (そのクラス内および現在のセッション中にのみ使用可能) を設定できます。次に例を示します。

//  ViewController.m
#import "ViewController.h"
@interface ViewController ()
{
    NSString *nameOfGlobalVariable;
}
@end

または、iOS では、デフォルトをNSUserDefaultsというストレージ システムに保存できます。NSUserDefaults を使用すると、いつでも、どのクラスでも、どのアプリ セッションでも、デフォルトを設定してアクセスできます。デフォルトは、アプリのバンドル内の PLIST ファイルに保存されます。デフォルトを設定する方法は次のとおりです。

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:@"YourText" forKey:@"NameOfDefault"];
[defaults synchronize];

NSUserDefaults メソッドを調べて、 のsetObjectようなものに変更してみてくださいsetBool。デフォルトの取得は非常に似ています。単純に NSUserDefaults を定義し、[objectForKey]メソッドを使用してそれを取得します。コピーして貼り付けるだけではプログラミングは面白くないので、その部分を理解するのはあなたに任せます;)

幸運を!

于 2012-11-27T02:27:48.727 に答える
0
Just try something like that:-

// In .h file, define your enum...
enum
{
MDefaultButtonText = 1,
MToggleButtonText
};

// In .m file, define your string if the text not changed...
#ifndef MDefaultButtonTextString
#define MDefaultButtonTextString "This is default string"
#endif

#ifndef MToggleButtonTextString
#define MToggleButtonTextString "This is toggled string"
#endif

/*
Please note, you can also used:-
const NSString *testStr = @"your required string";
// Feel free if you think to know more...
*/

Now, in viewDidLoad:-
[yourButton setTag:1];
[yourButton addTarget:self action:@selector(someProcedure:) forControlEvents:UIControlEventTouchUpInside];

Now, you do need of implementing your click event...
-(void)someProcedure:(id)sender
{
// Do your stuff here...

switch([sender tag])
{
case MDefaultButtonText://sender.tag = 1
     [sender setTag:2];
     [sender setTitle:MToggleButtonTextString forState:UIControlStateNormal];
     // In alert set Message to = MDefaultButtonTextString
     break;
case MToggleButtonText:////sender.tag = 2
     [sender setTag:1];
     [sender setTitle:MDefaultButtonTextString forState:UIControlStateNormal];
     // In alert set Message to = MToggleButtonTextString
     break;
default:
     //if you required...
     break;
}
}

Please cross check the required message accordingly to your requirement.Hope, it'll sort your issue.

Any concern, just get back to me. :)
于 2012-11-27T04:46:35.457 に答える