目标c:将代表移交给其他班级

时间:2011-08-09 06:32:48

标签: iphone objective-c uitableview delegates

我在这里遇到了一个问题。我有一个协议,声明一个方法,返回我的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时,我得到的是例外情况。

2 个答案:

答案 0 :(得分:0)

您是否曾致电-[UITableView reloadData]通知其当前状态无效?

你是否重载了委托setter方法,以便根据需要获取和设置新的数据源和委托?可能是这样的:

-(void)setDelegate:(id<MYDelagate>)delegate;
{
    myTableView.dataSource = [delegate tableViewDataSource];
    myTableView.delegate = [delegate tableViewDelegate];
    _delegate = delegate;
}

答案 1 :(得分:0)

因此,看起来,使用单例是存储我的数据的正确方法:

  • 我创建了一个单身人士。
  • 单身人士拥有我的3个不同的数据阵列。
  • 委托将新数组发送给单例。
  • 我通过单身人士从视图中获取数据。

就像它一样简单......谢谢你们的灵感: - )