0

iOSアプリ開発初心者です。現在、画面に2つの単語を表示し、ユーザーが1つを選択すると、アプリは選択したxを出力する非常に単純なアプリケーションに取り組んでいます。

2 つの plist を作成し、それらを配列にロードして配列内でランダム化しました。私の見解では、単語を表示するボタンが 2 つあります。しかし、私は 2 つの問題を抱えています.. 1 。アプリの起動時にボタンのラベルを変更したい。したがって、ユーザーはボタンなどをタップする必要はありません。2. array_1 (plist からロードされた) からの 1 つのランダムな単語をランダムなボタンに表示したい。button_1 または button_2 のいずれかであり、リスト array_2 についても同じです。

これが私がこれまでに行ったことです。(フォーラムの助けを借りて (: )

- (IBAction)buttonpressed:(id)sender {

    // Load contents of plist onto array

    NSString *path = [[NSBundle mainBundle] pathForResource:@"wordsOne" ofType:@"plist"];
    NSMutableArray *words = [NSMutableArray arrayWithContentsOfFile:path];

    //shuffle them using Fisher–Yates shuffle algorithm

    for (int i = words.count-1; i>=0; i--) {
        int r = arc4random_uniform(words.count);
        [words exchangeObjectAtIndex:i withObjectAtIndex:r];
    }

    // assign word to the button
    for (int j =0; j<_WordButton.count; j++) {
        UIButton *button = [_WordButton objectAtIndex:j];
        button.titleLabel.text = [words objectAtIndex:j];
    }

}

上記のコードには明らかに欠陥があります。たとえば、plist を 1 つだけ使用し、両方のボタンに単語をランダムに表示しません。

4

3 に答える 3

4

次のコードを使用して UIButton Title を設定できます。

[button setTitle:titleString forState:UIControlStateNormal];
于 2013-04-20T09:45:32.903 に答える
2

目的を達成するには、.xib ファイルのボタンに IBOutlet を作成する必要があります。これを行うには、IBOutlet コードを作成し、.xib ファイルからコードへの接続を同時に作成する簡単な Xcode ショートカットを使用します。

  1. Xcode で .xib ファイルを開き、Interface Builder を使用してグラフィック ファイルを表示します。
  2. Xcode の右上にあるツールバーには、さまざまなモードを切り替えることができるアイコンがあり、[アシスタント エディター] を選択します。Interface Builder がスライドしてウィンドウをコード ファイルと共有します。これにより、ViewController.h が自動的に選択されます
    。ツールバーは次のようになります。
    ここに画像の説明を入力

  3. 次のようにコードに中かっこを挿入します。

`

@interface CustomViewController : UIViewController {
// This is where you will control-drag to from the Interface Builder to have it create an IBOutlet to the button for you
}

// Your already set-up IBAction Method
- (IBAction)buttonpressed:(id)sender
@end

`

  1. ラベルを変更するボタンから、.h ファイルの中括弧の間の領域に Control キーを押しながらドラッグします。
    ここに画像の説明を入力

  2. 新しいダイアログ ボックスが表示されます。設定が次のようになっていることを確認します
    。接続 = IBOutlet
    b. 名前 = (ボタンの名前は何でも、'_wordButton' を使用しました)
    c. タイプ = UIButton
    d. ストレージ = 弱い

ここに画像の説明を入力

  1. これで、アクション メソッド- (IBAction)buttonpressed:(id)senderとアプリケーション:didFinishLaunchingWithOptions (アプリケーションの起動時に単語をラベルに自動的にロードするため) で、ボタンのタイトルを次のように設定できます。

`

// Create a string from the word that you pull out of the plist file
NSString *labelWord = ???;

// Set the label of the button
[_wordLabel setTitle:word forState:UIControlStateNormal];

`

于 2013-04-20T09:58:28.303 に答える
0

次のようにします。

-(void)viewDidLoad{
[self setnewtitle];

}

-(void)setnewtitle{
NSString *pathone = [[NSBundle mainBundle] pathForResource:@"wordsOne" ofType:@"plist"];
    NSMutableArray *wordsOne = [NSMutableArray arrayWithContentsOfFile:pathone];
NSString *pathtwo = [[NSBundle mainBundle] pathForResource:@"wordsOne" ofType:@"plist"];
    NSMutableArray *wordsTwo = [NSMutableArray arrayWithContentsOfFile:pathtwo];
int words = "the number of objects(words) in your plist";
int randombutton = arc4random() % 2;
int randomplist = arc4random() % 2;
int randomWord = arc4random() % words;

if (randombutton==0){
if (randomplist==0){
[[_WordButton objectatIndex:randombutton] setTitle:[wordsOne objectatIndex:randomWord]];
} else {
[[_WordButton objectatIndex:randombutton] setTitle:[wordsTwo objectatIndex:randomWord]];

}
}else {
if (randomplist==0){
[[_WordButton objectatIndex:randombutton] setTitle:[wordsOne objectatIndex:randomWord]];
} else {
[[_WordButton objectatIndex:randombutton] setTitle:[wordsTwo objectatIndex:randomWord]];

}
}



}

配列に含まれるボタンが初期化され、割り当てられていることを確認してください。また、質問がある場合は、お気軽にお問い合わせください

于 2013-04-20T09:53:05.840 に答える