子类化UITableView

时间:2013-10-30 06:30:13

标签: ios objective-c uitableview uiview

我有一个UIViewController我将UISegmenetedControl放在了{2}个选项下面,我有一个UIView作为放置我的自定义UIView的容器(实际上是一个UITableView)。在段之间切换时,我想在2个不同的UITableViews.

之间切换

我的问题在于UITableView. 我已经使用UIView创建了一个自定义的.xib类,并在内部放置了UITableView,我可以将数据填充到表中并正确查看。

问题在于滚动,它根本不会对垂直滚动做出反应!

以下是我使用其表创建UIView的方法。

.h档案

@interface LeaderboardTableView : UIView

@property (strong, nonatomic) IBOutlet UIView *view;

@property (strong, nonatomic) IBOutlet UITableView *tableView;

@property (strong, nonatomic) NSDictionary *myScore;

@property (strong, nonatomic) NSArray *players;


- (id)initWithBoardType:(LeaderboardType)boardType myScore:(NSDictionary*)myScore leaderboardData:(NSArray*)data;

@end

.m文件

@implementation LeaderboardTableView

- (id)initWithBoardType:(LeaderboardType)boardType myScore:(NSDictionary*)myScore leaderboardData:(NSArray*)data {

    self = [super init];
    if(self) {

        _players = data;
        _myScore = myScore;
        _boardType = boardType;

        self.tableView.delegate = self;
        self.tableView.dataSource = self;
    }

    return self;

}

- (id)initWithFrame:(CGRect)frame {

    self = [super initWithFrame:frame];
    if(self) {
        [self setup];
    }

    return self;
}

- (void)setup {

    [[NSBundle mainBundle] loadNibNamed:@"LeaderboardTableView" owner:self options:nil];
    [self addSubview:self.view];
}

这是我的.XIB

enter image description here

我做错了什么?我怀疑我的UITableView位于UIView,这就是我无法滚动的原因,但我无法弄清楚如何解决这个问题。

谢谢!

3 个答案:

答案 0 :(得分:1)

假设您使用initWithBoardType:myScore:leaderboardData:来实例化您的视图,请尝试更改:

self = [super init];

通过

self = [self initWithNibName:@"LeaderboardTableView" bundle:[NSBundle mainBundle]];

在这种方法中。

但它不确定它是否会解决您的滚动问题。看起来好像有一个"看不见的"查看你的桌子。
让我知道你如何展示你的观点。

答案 1 :(得分:1)

更好的想法是使用一个表视图并为每个不同的UISegmentedControl点击切换数据源。

答案 2 :(得分:0)

最后,我能够在zbMax的帮助下解决这个问题!

最终我使用XIB将自定义Table子类化为UITableViewController。我实现了填充单元格的所有逻辑并在我的父视图控制器中嵌入了这个TableView,这样我就可以在2个表格视图之间切换。