cellForRowAtIndexPath никогда не вызывается - PullRequest
1 голос
/ 01 сентября 2010

Я создал подкласс UITableView для создания собственной системы поиска данных, как описано в учебном руководстве Apple по основным данным, но столкнулся с проблемой. Заменяющий метод cellForRowAtIndexPath в моей пользовательской таблице никогда не вызывается, даже когда я вызываю reloadData или setNeedsDisplay. Я искал решения для этого, и кажется, что эта ошибка может быть вызвана множеством проблем. Однако я проверил все те, которые я могу найти, и не вижу ничего пропавшего. Может кто-нибудь сказать мне, что может быть не так?

P.S. Я знаю, что протокол UITableViewDataSource должен быть в треугольных скобках, но я не мог понять, как отображать треугольные скобки на странице, не удаляя текст между ними.

H-файл

<code>@interface DataTable : UITableView <UITableViewDataSource> {
    NSMutableArray *list;
}</p>

<p>@property (nonatomic, retain) NSMutableArray *list;</p>

<p>@end

M-файл
<code>@implementation DataTable</p>

<p>@synthesize list;</p>

<p>-(id) initWithFrame:(CGRect)rect Style:(UITableViewStyle)style{
    if (self = [super initWithFrame:rect style:style]){
        list = [[NSMutableArray alloc] init];
        self.dataSource = self;
    }
    return self;
}</p>

<ul>
<li><p>(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
return [list count];
}</p></li>
<li><p>(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
static NSString *cellID = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellID];
if (cell == nil){
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle 
                                   reuseIdentifier:cellID] autorelease];
}</p>

<p>CH *this = (CH *)[list objectAtIndex:indexPath.row];
cell.detailTextLabel.text = [this.clusterName mutableCopy];
return cell;
}</p></li>
</ul>

<p>-(void) dealloc{
    [list release];
    [super dealloc];
}</p>

<p>@end

1 Ответ

2 голосов
/ 01 сентября 2010

Неважно, думаю, я нашел это. По сути, вы не можете установить делегата источника данных в этой части программы. Нужно сделать это из собственного контроллера вида.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...