我想在我的应用中使用相对较小的表格视图。但我似乎没有运气,因为桌面视图占据了整个屏幕。
-(void)viewDidLoad{
UITableView *tableView = [[UITableView alloc] initWithFrame:CGRectMake(0.0, 0.0, 20.0, 60.0) style:UITableViewStylePlain];
self.view = tableView;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *MyCellIdentifier = @"MyCellIdentifier";
UITableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:MyCellIdentifier];
if(cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:MyCellIdentifier];
}
return cell;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return 5;
}
答案 0 :(得分:3)
在viewDidLoad方法中,将self.view = tableView
替换为
[self.view addSubview:tableView];
答案 1 :(得分:0)
您必须创建一个属性并为tableView命名:
@property(强,非原子)IBOutlet UITableView * myTableView;
之后你必须连接代表并执行
@synthesize myTableView;
然后使用你的代码:
myTableView = [[UITableView alloc] initWithFrame:CGRectMake(0.0,0.0,20.0,60.0)样式:UITableViewStylePlain];
没有这个 - > self.view = tableView;
答案 2 :(得分:0)
我经常遇到这个问题。根据我的经验处理这个问题的最佳方法是创建一个容器视图控制器,它将表vc作为子vc。
我创建了一个简单的类来管理它。你可以在IB中设置vc。
#import <UIKit/UIKit.h>
@interface ContainerViewController : UIViewController
@property (weak, nonatomic) IBOutlet UIView *contentViewPlaceholderView;
@property (strong, nonatomic) IBOutlet UIViewController *contentViewController;
@end
#import "ContainerViewController.h"
@interface ContainerViewController ()
@property (assign, nonatomic)BOOL isContentVCAdded;
@end
@implementation ContainerViewController
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
[self setup];
}
return self;
}
- (id)initWithCoder:(NSCoder *)aDecoder
{
self = [super initWithCoder:aDecoder];
if (self) {
[self setup];
}
return self;
}
- (void)setup
{
self.isContentVCAdded = NO;
}
- (void)insertAndShowContentVC
{
[self removeAllChildVCs];
self.contentViewController.view.frame = self.contentViewPlaceholderView.bounds;
[self addChildViewController:self.contentViewController];
[self.contentViewPlaceholderView addSubview:self.contentViewController.view];
[self.contentViewController didMoveToParentViewController:self];
self.isContentVCAdded = YES;
}
- (void)removeAllChildVCs
{
for (UIViewController *vc in self.childViewControllers) {
[vc willMoveToParentViewController:nil];
[vc.view removeFromSuperview];
[vc removeFromParentViewController];
}
}
- (void)setContentViewController:(UIViewController *)contentVC
{
_contentViewController = contentVC;
if (contentVC == nil) {
[self removeAllChildVCs];
}
else {
[self insertAndShowContentVC];
}
}
#pragma mark Lifecycle
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
if (nil != _contentViewController && !self.isContentVCAdded) {
[self insertAndShowContentVC];
}
}
@end
您只需要创建一个contentViewPlaceholderView
(在IB或代码中),它具有您希望表视图具有的帧。然后,您只需根据需要创建表格vc,并将其设置为contentViewController
ContainerViewController