私はiOSプログラミングに比較的慣れていないので、ここで我慢してください。私が取り組んでいる要件は次のとおりです。
画面 1:データ (具体的には City と State) がロードされた UITableView がユーザーに表示されます。ユーザーが選択をタップすると、画面 2 が表示されます。
画面 2:編集のために選択した項目の「詳細」ビューがユーザーに表示されます。
- City 文字列 ( selectedCity ) は、編集のためにテキスト ボックスに配置されます。
- 状態の NSArray は UITableView にロードされます。選択した都市の州は、画面 1 ( selectedState )から渡された文字列に基づいて、ロード時にテーブルで選択する必要があります。必要に応じて、ユーザーはここで別の状態を選択できます。
- 2 番目の UITableView には、都市に関連し、データベースから取得された学校の配列が含まれます。このリストを管理するための別の機能セットがあります。
画面 1 の実装に問題はありませんでした。都市と州の値を画面 2 に渡す方法は次のとおりです。
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
//Get the City
self.checkedCellIndex = indexPath.row;
FSCity *selectedCity = [CityList objectAtIndex:indexPath.row];
NSString *cityName = selectedCity.name;
NSString *stateName = selectedCity.state;
AdminCityView *dvController = [[AdminCityView alloc] initWithNibName:@"AdminCityView" bundle:[NSBundle mainBundle]];
dvController.selectedCity = cityName;
dvController.selectedState = stateName;
[self.navigationController pushViewController:dvController animated:YES];
dvController = nil;
}
ただし、Screen 2 をビルドするには、UITableView (StateTable と SchoolTable) ごとに UITableViewControllers を作成し、次のようにメインの UIViewController (AdminCityView) にロードする必要がありました。
- (void)viewDidLoad
{
[super viewDidLoad];
txtCity.text = selectedCity;
if (stateController == nil) {
stateController = [[StateTable alloc] init];
}
if (schoolController == nil) {
schoolController = [[SchoolTable alloc] init];
}
[tblState setDataSource:stateController];
[tblSchool setDataSource:schoolController];
[tblState setDelegate:stateController];
[tblSchool setDelegate:schoolController];
stateController.view = stateController.tableView;
schoolController.view = schoolController.tableView;
}
UIViewController で selectedState 変数を問題なく取得でき、State テーブルが UIView で問題なく読み込まれますが、selectedState 変数を UIViewController (AdminCityView) から UITableViewController (StateTable) に渡す方法に行き詰っています。変数を使用して StateTable に対して操作を実行できます (変数に一致する行の選択など)。
私は AdminCityView と StateTable の両方で NSLog をテストしてきましたが、変数は現在 AdminCityView からしかアクセスできません。AdminCityView のコードを介して渡す必要があるのか、または AdminCityView に移動する前に、画面 1 に戻って何らかの方法で StateTable に渡す必要があるのかがわかりません。
答えにたどり着くのに役立つかもしれない追加のコードを投稿できてうれしいです。ありがとう!