【发布时间】:2010-03-31 09:19:13
【问题描述】:
可能是本网站的常见问题解答。
我有一个包含表单的 TableViewController。在该表单中,我有两个字段(每个字段都在其自己的单元格中):一个用于选择支付者(单选),另一个用于选择支付人员费用(多选)。
这两个字段都会打开一个包含在 UINavigationController 中的新 TableViewController。
单选字段(Paid By)持有一个对象Membership 多选字段(付费)持有一个对象NSMutableArray
两个变量都以相同的方式发送到新控制器:
mySingleSelectController.crSelectedMember = self.crPaidByMember;
myMultipleSelectController.crSelectedMembers = self.crSelectedMembers;
从为控制器支付的费用中,我使用 didSelectAtIndexPath 方法设置一个可变的成员资格数组:
if ([[tableView cellForRowAtIndexPath:indexPath] accessoryType] == UITableViewCellAccessoryCheckmark) {
[self.crSelectedMembers removeObject:[self.crGroupMembers objectAtIndex:indexPath.row]];
//...
}
else {
[self.crSelectedMembers addObject:[self.crGroupMembers objectAtIndex:indexPath.row]];
//...
}
到目前为止一切顺利。可变数组 (crSelectedMembers) 是从子视图完美设置的。 但... 我在设置 Membership 对象时遇到问题。
从付费控制器我使用 didSelectAtIndexPath 来设置成员身份:
[self setCrSelectedMember:[crGroupMembers objectAtIndex:indexPath.row]];
通过 NSlogging crSelectedMember,我在 self 中获得了正确的选定成员,但在 ivar 指向的父视图中,没有任何改变。
我做错了吗?因为我可以调用crSelectedMembers的方法,但是我不能改变crSelectedMember的值。
【问题讨论】:
标签: iphone objective-c memory-management