UITableView委托和dataSource方法没有被调用

And*_*rew 13 iphone objective-c uitableview ios

我有一个包含UITableView的UIView.tableview的委托设置为我的UIView,但它从不调用委托方法:

-(id)init {
    self = [super init];
    if (self) {
        self.tableView = [[UITableView alloc] initWithFrame:self.bounds];
        self.tableView.autoresizingMask = UIViewAutoresizingFlexibleWidth;
        self.tableView.dataSource = self;
        self.tableView.delegate = self;
        self.tableView.scrollEnabled = NO;
        self.tableView.layer.cornerRadius = PanelCornerRadius;
        [self addSubview:self.tableView];
    }
    return self;
}

#pragma mark - UITableViewDelegate methods

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {

    NSLog(@"height for row");
    int height = [self heightForRowAtIndexPath:indexPath];

    return height;
}

#pragma mark - UITableViewDataSource methods

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {

    NSLog(@"number of rows");
    if (self.manager.fetchOperation.dataFetchProblem) {
        return 1;
    }

    int numberOfRows = [self.delegate numberOfSectionsInPanel:self];

    return numberOfRows;
}
Run Code Online (Sandbox Code Playgroud)

我已经探索了我能想到的每一个选项,但似乎无法找到问题的根源.

编辑:包括numberOfRowsInSection.它可能会返回0,只有它永远不会有机会,因为"行数"NSLog永远不会被调用.

try*_*lly 19

你能写一下你在cellForRowAtIndexPath:方法上写的代码吗?因为我发现你的代码没有任何问题.

你是从其他ViewController调用你的UIView吗?如果有,怎么样?

我做过类似的事情一次.我在UIView中声明了一个方法,如下所示:

- (void)setUpTableView{
    self.tableview.delegate=self;
    self.tableview.dataSource=self;
}
Run Code Online (Sandbox Code Playgroud)

然后我从视图控制器调用setUpTableView我添加了这个视图,如下所示:

[self.yourView setUpTableView]; 
Run Code Online (Sandbox Code Playgroud)

这可能有所帮助.谢谢.


小智 15

我有类似的问题,我的解决方案是因为我没有将部分数量设置为1.

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    // Return the number of sections.
    return 1;
}
Run Code Online (Sandbox Code Playgroud)


小智 3

你应该这样声明你的观点 @interface MyView : UIView <UITableViewDelegate, UITableViewDataSource>

顺便说一句:我会有一个 ViewController 来“控制”您的视图和表视图,并让 ViewController 成为表视图的委托和数据源。