0

ボタンを押すたびに、ABC とは異なる文字をユーザーに提示したいと思います。

そのため、アプリケーションを最初にクリックすると、ユーザーに文字 A が表示され、次にボタンを押す必要があり、文字 B などが表示されます。

私の課題は、ボタンをクリックするたびにタイトルのテキストを置き換える方法です。2つの関数のコードをいくつか書き留めました。よく見ると、-(void)displayABC:(id)sender毎回呼び出されていることがわかります。配列の最初のメンバーを取得するたびに、ユーザーが最初に文字Aを見てから押しますボタンをクリックすると、配列の最初のメンバーである文字 B が表示されますが、毎回 plist ファイルをロードするため、配列の最初のメンバーを呼び出し続けるため、同じ文字が表示されます。

それを解決する方法はありますか?

-(void)createLoginBioButton
{
    authButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    [authButton setBounds:CGRectMake(300,300, 150, 150)];
    [authButton setCenter:CGPointMake(150, 240)];
    [self.view addSubview:authButton];
    [authButton setEnabled:true];
    [authButton setTitle:@"A" forState:UIControlStateNormal];
    [authButton setFont:[UIFont systemFontOfSize:70]];
    [authButton addTarget:self
                   action:@selector(displayABC:) 
         forControlEvents:UIControlEventAllTouchEvents];
 }

-(void)displayABC:(id)sender
{
    NSString *path = [[NSBundle mainBundle] pathForResource:@"ABC" ofType:@"plist"];
    NSArray *ABCArray = [NSArray arrayWithContentsOfFile:path];
    for (NSString *ABCValues in ABCArray){
        [authButton setTitle:ABCValues forState:UIControlStateNormal];
    }
}
4

2 に答える 2

0

最も簡単な解決策は、インデックスを追跡し続ける静的変数を置くことです

-(void)createLoginBioButton
  {

    authButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    [authButton setBounds:CGRectMake(300,300, 150, 150)];
    [authButton setCenter:CGPointMake(150, 240)];
    [self.view addSubview:authButton];
    [authButton setEnabled:true];
    [authButton setTitle:@"A" forState:UIControlStateNormal];
    [authButton setFont:[UIFont systemFontOfSize:70]];
    [authButton addTarget:self action:@selector(displayABC:) forControlEvents:UIControlEventAllTouchEvents];
 }

-(void)displayABC:(id)sender
{

    static int index = 0;
    NSString *path = [[NSBundle mainBundle] pathForResource:@"ABC" ofType:@"plist"];
    NSArray *ABCArray = [NSArray arrayWithContentsOfFile:path];
    if(index < [ABCArray count])
        [authButton setTitle:[ABCArray objectAtIndex:index] forState:UIControlStateNormal];
    index++;


}
于 2013-06-14T05:56:51.220 に答える