我正在尝试构建一个使用类似以下数据模型的应用程序。我可以在tableView中做到这一点,但我想更有创意。例如,在导航控制器中,我希望有一个包含10个图像的视图(或带有图像作为背景的按钮)。
(三个实体)
实体1:众议院
实体2:人
实体3:儿童
关系是一对多的 属性都是字符串
person< ---->> house,children< --->> adult
在第一个视图中有图像,每个图像都分配给实体House(houseName 1,houseName 2等)。当你选择一个房子时,它会推送下一个包含5个图像的视图(链接到Person Entity(personName 1,personName2等)。当你选择PersonName时,它将推送填充了Children Entity的下一个视图。
我已经阅读了很多关于核心数据的信息,我很乐意这样做:
NSManagedObject *managedObject = [self.fetchedResultsController objectAtIndexPath:indexPath];
cell.textLabel.text = [[managedObject valueForKey@"houseName"] description];
但非常不确定我应该从哪里开始使用和图像或按钮来执行此操作
我在考虑这样的事情:
-(id)initWithHouseViewController:(HouseViewController*)aHouseViewController house:(NSManagedObject *)aHouse{
if blah blah
self.houseViewController = aHouseViewController;
self.house = aHouse
}return self;
}
//选择器
-(void) showPersonView{
PersonViewController *pvc = [[PersonViewController alloc] initWithHouseViewController:self house:house];
viewDidLoad中的
{
if (house != nil) {
UIImageView *house1 = [[ UIImageView alloc.. blah blah
some kind of.. action:@selector(showPersonView)
((for each houseName in house) instead of house1, house2,)
...
}
使用viewDidLoad的任何建议,我不需要在每个图像(或按钮)中硬编码,这将使这个更容易移植。另外,如果有更好/更有创意的方法可以做到这一点,我也不会这样做。
对不起,如果这有点乱。这在我的脑海里也很混乱。
感谢您花时间阅读本文,
答案 0 :(得分:1)
在这种情况下,我不会使用FetchResultController。
相反,你可以试试这个:
创建一个视图控制器,将所有房屋显示为按钮,您可以根据“房屋”计数动态创建按钮。 它看起来像这样:
NSArray * allHouses = [Houses allObjects];
//you can sort them if you need
[allHouses enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
//create the buttons as custom and you can add any image to the button
UIButton *button....
button
//store the house index as the button tag, so you can get it later
button.tag = idx;
//add a selector to the button
[button addTarget:self
action:@selector(getPersons:)
forControlEvents:UIControlEventTouchUpInside];
}];
创建一个新的PersonViewController来保存这些人。视图控制器应该将房子作为参数而不是人。到达房子后,您将获得有关系的人员。
现在添加此方法以获取:
-(void)getPersons(UIButton*)sender{
NSInteger *tag = sender.tag;
House * house = (House*)[allHouses objectAtIndex:tag];
PersonViewController *pvc = [[PersonViewController alloc] init];
pvc.house = house;
[self.navigationController pushViewController.....];
}
在人员视图控制器中,您可以获取所有人或获取请求,或者只需使用:
NSArray *allPersons = [house.person all objects];
再次创建人物按钮与第一个视图控制器相同。
使用Children视图控制器重新获得相同的过程。
GoodLuck
沙尼