我对 iOS 编程比较陌生,所以请耐心等待。我正在使用的要求如下:
屏幕 1:向用户展示了一个加载了数据的 UITableView,特别是城市和州。用户点击一个选择并被带到屏幕 2。
屏幕 2:向用户显示他们选择进行编辑的项目的“详细”视图。
- 城市字符串 ( selectedCity ) 放置在文本框中进行编辑
- 在 UITableView 中加载了一个 NSArray 状态。应根据从屏幕 1 ( selectedState )传递的字符串在加载表中选择所选城市的状态。如果需要,用户可以在此处选择不同的状态。
- 第二个 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;
}
然而,为了构建屏幕 2,我必须为每个 UITableView(StateTable 和 SchoolTable)创建 UITableViewController,并将它们加载到主 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 变量并且我的状态表在 UIView 中加载得很好,但我仍然坚持如何将 selectedState 变量从我的 UIViewController (AdminCityView) 传递到 UITableViewController (StateTable) 以便我可以对带有变量的StateTable进行操作(比如选择与变量匹配的行)。
我一直在 AdminCityView 和 StateTable 上使用 NSLog 进行测试,并且该变量目前肯定只能从 AdminCityView 访问。我不确定是否需要通过 AdminCityView 中的代码传递它,或者我是否应该返回屏幕 1 并在导航到 AdminCityView 之前以某种方式将其传递给 StateTable。
我很高兴发布任何可能有助于获得答案的其他代码。谢谢!