【问题标题】:UITableView superClass for delegate?代表的 UITableView 超类?
【发布时间】:2010-05-11 09:46:30
【问题描述】:

一个简单的问题,我正在为 UITableView 设置一个委托,并且我有一个关于设置委托和数据源属性的问题。我注意到委托和数据源的属性不可用,我认为采用协议将使它们可用。但我现在想我的委托类的超类可能是错误的。

目前我有:

-(void)viewDidLoad {
    TestDelegate *tempDelegate = [[TestDelegate alloc] init];
    [self setMyDelegate:tempDelegate];
    // setDelegate
    // setDataSource
    [tempDelegate release];
    [super viewDidLoad];
}

我的 TestDelegate 界面如下所示:

@interface TestDelegate : NSObject <UITableViewDelegate, UITableViewDataSource> {
    NSArray *listData;
    int myCounter;
}

请问以上应该是:

@interface TestDelegate : UITableView <UITableViewDelegate, UITableViewDataSource> {
    NSArray *listData;
    int myCounter;
}

加里

编辑:我认为它可能在正确的轨道上:我的委托超类应该是 NSObject,我在 Interface Builder 中也有一个 UITableView。

我添加了@property(nonatomic, retain)IBOutlet UITableView *myTableView;在 Xcode 中并将其连接到我在 IB 中的 UITableView。我现在可以通过 IBOutlet 访问 Xcode 中的 delegate 和 dataSource 属性。

【问题讨论】:

  • 那里似乎没有问题。 “委托和数据源的属性不可用”是什么意思? - UITableView 具有这些属性。另外,“采用协议将使它们可用”是什么意思?
  • 嗨,保罗,我很困惑,基本上我试图在 Xcode 中设置 UITableView>delegate 和 UITableView>dataSource 但对如何做感到困惑。我缺少的是,就像您在 IB 中添加的所有项目一样,如果您想通过 Xcode 访问它们,您需要使用 IBOutlet 创建指向相应对象的指针。

标签: iphone objective-c cocoa-touch


【解决方案1】:

子类化 UITableView 和仅仅符合UITableViewDelegateUITableViewDatasource 协议之间是有区别的。

如果您需要表格视图本身的不同行为,您可能需要子类化UITableView。 -> 大多数时候你不想这样做

UITableView 具有delegatedataSource 属性,您可以将其分配给符合各自协议的对象。

如果您想拥有对delegatedataSource 属性的顶级访问权限,则需要将UITableViewController 子类化。(如果您将@ 子类化,则不符合委托协议987654331@)

【讨论】:

  • 嗨,Jacob,你的权利,我对如何通过 Xcode 在 IB 中访问我的 UITableView 感到困惑,并在错误的地方寻找解决方案。非常感谢您的时间和 cmets。
猜你喜欢
  • 1970-01-01
  • 2023-03-12
  • 1970-01-01
  • 1970-01-01
  • 2013-06-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多