0

少しややこしいですが、説明できるように最善を尽くします。うまくいくことを願っています。

iOSで次の機能を作成しようとしています:

テーブルビューの各行に赤いボタンがあります。赤いボタンは (プロトタイプ) tableViewcell にドラッグ アンド ドロップされ、各行でボタンが使用されます。ボタンのテキストには、温度が華氏で表示されます。しかし、タップするとボタンの色が緑色に変わります。そして、この時点で追加の機能が必要です。華氏の温度が摂氏に変わります。(私はこの機能に問題があります)

ここでの問題は、1 つだけではなく、tableviewcells (それぞれが別の都市) のリストがあることです。その数のボタンがあり、データベースを使用して温度データを保存していません。データはサービスを介して読み取られ、配列に入れられ、NSUserDefaults によってこのビューに転送されます。

例えば; テーブルビューに都市のリストがあります。それぞれが行で、各温度は赤いボタンの上に置かれます。温度値は赤いボタンのテキストです。

  1. ベルリン 45F
  2. イスタンブール 70F
  3. マイアミ 100F
  4. シカゴ 30F

...等。

たとえば、ベルリンの行のボタンをタップして華氏を摂氏に変更すると、最初は問題なく、ベルリンの摂氏値を取得できます。問題ありません。しかし、次にタップして再び華氏に変更すると、値が正しく表示されません。ベルリンの華氏値は、他の値と混同されています。私はデータベースを使用しておらず、配列から値を読み取り、使用する値がわからないためです。いくつかのクリックの後、すべての華氏の値は、最後の都市の華氏の値である単一の値になります (indexPath.row を使用して、最後にクリックされた値を取得します)

データベースを使用せずにベルリンの温度データを維持するにはどうすればよいですか。他の都市のボタンをタップした後にもう一度タップすると、正しい値 (45F または正しい摂氏値) が表示されます。

ご協力いただきありがとうございます!

4

1 に答える 1

0

何らかの形式のキーベースのストレージを使用することをお勧めしますが (温度を格納するクラス「Cities」を作成するか、都市 -> 温度キーの組み合わせを辞書に格納するなど)、ボタンをクリックするとボタンのテキストを読み取ることができます。 NSString の値を倍精度または整数に変換します。
ボタンをクリックしたときに呼び出される関数は、これから記述しようとしているものと似ていると思います。次に、クリックしたボタンと、次のように表示されるテキストを取得できます。

- (IBAction)convertTemperature:(id)sender {
    UIButton *myButton = (UIButton *)sender;
    NSString *buttonText = [myButton titleForState:UIControlStateNormal];
    //...
}

この後、文字列を変換して温度を取得し、変換して表示し直します。

于 2013-01-03T19:21:34.460 に答える