我在这里遇到了一个问题。我有一个协议,声明一个方法,返回我的tableviews的数据源。数据源由一个类生成,用于3个表视图。如果你点击一个单元格,你可以使用不同的来源进入下一个tableview,依此类推(我认为你明白了这一点)。
第一个tableview的一切正常,但是当我将deletage交给下一个tableview时,我仍然没有得到第二个数据源。我是否必须在某一时刻释放代表?如果必须的话,当点击导航栏按钮时,如何取回它??
告诉我你是否有任何想法。
编辑:
if ([Where isEqualToString:@"System"])
{
if ([exchangeDelegate respondsToSelector:@selector(getNewDataSourceForSystem:)])
{
[exchangeDelegate getNewDataSourceForSystem: [controlDelegate setBranchNavigation:What]];
}
}
else if ([Where isEqualToString:@"User"])
{
if ([exchangeDelegate respondsToSelector:@selector(getNewDataSourceForUser:)])
{
[exchangeDelegate getNewDataSourceForUser: [controlDelegate setLeafNavigation:What]];
}
}
if ([exchangeDelegate respondsToSelector:@selector(getNewDataSourceForCostumer:)])
{
[exchangeDelegate getNewDataSourceForCostumer: [controlDelegate setRootNavigation]];
}
每个respondToSelector都会转到另一个类。
编辑: * 由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:' - [Costumers getNewDataSourceForSystem:]:无法识别的选择器发送到实例0x8a3b0e0'
当我遗漏 respondsToSelector:@selector
时,我得到的是例外情况。
答案 0 :(得分:0)
您是否曾致电-[UITableView reloadData]
通知其当前状态无效?
你是否重载了委托setter方法,以便根据需要获取和设置新的数据源和委托?可能是这样的:
-(void)setDelegate:(id<MYDelagate>)delegate;
{
myTableView.dataSource = [delegate tableViewDataSource];
myTableView.delegate = [delegate tableViewDelegate];
_delegate = delegate;
}
答案 1 :(得分:0)
因此,看起来,使用单例是存储我的数据的正确方法:
就像它一样简单......谢谢你们的灵感: - )