/ / UITableView + .plist + UINavigationControllerの問題 - objective-c、ios、ios4

UITableView + .plist + UINavigationControllerの問題 - objective-c、ios、ios4

私の最初のアプリとして、私は簡単なナビゲーションベースのnumismaticコレクションアプリを習得しようとしています。

Plistには191のレコード、国の普通のリスト - > item 0 - String - Albania ... item 190 - String - Vanuatuがあります。

これらのレコードを私の一時的な配列に読み込んで、UITableViewに移入します。

NSString *countriesFile=[[NSBundle mainBundle]pathForResource:@"countries" ofType:@"plist"];
countries=[[NSArray alloc]initWithContentsOfFile:countriesFile];

このテーブルビューには、セクション→大陸があります。

私のアプリのRootViewController

まあ、私の問題は:

別のペン先に押すと、国の名前とヘッダーとラベルに表示します。それはそうですが、ヨーロッパ諸国のみです。私が他の大陸の国を叩くと、ヨーロッパの国がいくつか見えます。スクリーンショットを見てください。

ヨーロッパの国をタップ - >ベルギー、右が表示されます。

ここに画像の説明を入力

アフリカのセクションに移動する:

ここに画像の説明を入力

アンゴラのテーピングとオーストリアへ

ここに画像の説明を入力

従って、アンゴラの指数 - 92.オーストリア - 1.しかし、オーストリアとアンゴラはともに彼らのネイティブセクションで第2の細胞です。

どこに問題があり、何があろうか?

前もって感謝します。

回答:

回答№1は0

私はあなたが使用していると仮定しています -(void)tableView: (UITableView*)tableView didSelectRowAtIndexPath: (NSIndexPath*)indexPath あなたがリスト内のアイテムをクリックしたことを知らせるには? また、使用していますか [indexPath row] (または indexPath.row)あなたがタップした行のインデックスを把握するには?

どのような row プロパティの戻り値は、現在のセクション。これは、テーブル全体の絶対行インデックスを返しません。このため、第1セクションのインデックス2項目または第2セクションのインデックス2項目をクリックするかどうかは関係ありませんが、 row 両方のケースで2を返します。

アイデアは.plistファイルを少し変更することです。 1つの長い配列を持つのではなく、大陸を表す親配列を持ちます。この大陸配列の各インデックスのオブジェクトには、そこにある国のリストを保持する別の配列があります。

-(void)tableView: (UITableView*)tableView didSelectRowAtIndexPath: (NSIndexPath*)indexPath
{
NSUInteger section=[indexPath section];
NSUInteger row=[indexPath row];
NSString* countryName=[[plistArray objectAtIndex: section] objectAtIndex: row];
//rest of code...
}

回答№2の場合は0

あなたが考慮していないように聞こえるindexPathのセクション値indexPathには、セクションと行の2つの部分があります。セクションが1つのテーブルでは、通常、行の値を読み取るだけです。あなたのケースでは、グループ化されたテーブルを持っているように見えるので、データの場所としてindexPath.srowとindexPath.rowの両方を読み取る必要があります。