TableView внутри UIViewController - PullRequest
2 голосов
/ 19 марта 2012

Я хочу поместить tableView в UIViewController, потому что мне нужна панель инструментов в верхней части представления, и поэтому я не могу использовать tableViewController. Я создал класс tableView и поместил в него то, что, как мне показалось, было бы необходимыми функциями, но я, должно быть, что-то упустил, или что-то где-то не так.

.h

import <UIKit/UIKit.h>

@interface TestTV : UITableView
@property(strong,nonatomic)NSArray *arr;

@end

#import "TestTV.h"

@implementation TestTV
@synthesize arr = _arr;

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

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

    _arr = [[NSArray alloc]initWithObjects:@"HEJ",@"FOO", nil];
    return _arr.count;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault  reuseIdentifier:CellIdentifier];
    }

    NSString *cellValue = [_arr objectAtIndex:indexPath.row];
    cell.textLabel.text = cellValue;

    return cell;
}
@end

1 Ответ

6 голосов
/ 19 марта 2012

Возможно, вы не хотите создавать подкласс UITableView. Вместо этого в своем подклассе контроллера представления объявите о своем намерении реализовать соответствующий протокол делегата и источника данных:

@interface MyViewController : UIViewController <UITableViewDataSource, UITableViewDelegate>

Затем в файле реализации вашего контроллера представления реализуйте методы, которые вы определили выше.

Наконец, в Интерфейсном Разработчике (или программно) установите оба выхода delegate и dataSource табличного представления равными контроллеру представления его суперпредставления (в IB этот контроллер представления является Владельцем Файла).

Вы также можете сделать массив данных свойством контроллера представления.

...