Iphone UITableView是否可以调整大小?我可以指定不同的帧吗?
UITableView是否可以调整大小?我可以指定不同的帧吗 我正在UITableViewController中尝试这一行,但它不起作用(在iPhone上):Iphone UITableView是否可以调整大小?我可以指定不同的帧吗?,iphone,objective-c,ios,Iphone,Objective C,Ios,UITableView是否可以调整大小?我可以指定不同的帧吗 我正在UITableViewController中尝试这一行,但它不起作用(在iPhone上): 感谢您不要使用UITableViewController,因为在UITableViewController中,self.view==self.tableView 尝试使用UIViewController,根据需要实现UITableViewDataSource和UITableViewDelegate协议。是的,UITableView可调整大
感谢您不要使用UITableViewController,因为在UITableViewController中,
self.view==self.tableView
尝试使用UIViewController,根据需要实现UITableViewDataSource和UITableViewDelegate协议。是的,UITableView可调整大小,但在使用UITableViewController时不可调整大小 尝试将UITableView添加到普通UIViewController,并使其实现所需的委托方法。通过这种方式,您可以在自定义UITableView时获得更大的灵活性 阅读以下两个链接
要详细介绍伯克的答案:
@property IBOutlet UITableView
,将UITableView
对象添加到XIB并链接它们李>
UITableView
的委托和数据源设置为类李>
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return 1;
}
- (UITableViewCell *)tableView:(UITableView *)aTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString *cellIdentifier = @"ServiceCell";
UITableViewCell *cell = (UITableViewCell*)[self.tableView dequeueReusableCellWithIdentifier:cellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] init];
}
return [cell autorelease];
}
结果是一个具有可调整大小的tableView的UITableViewController。如果使用UITableViewController,则无法调整self.tableView.frame或self.view.frame的大小,但您可以做的是 您可以使用以下方法设置上边距:
UIEdgeInsets inset = UIEdgeInsetsMake(50, 0, 0, 0);
self.tableView.contentInset = inset;
这不是一个好的做法,只是万一你想在上面有更多的空间,你可以使用它
不应使用UITableViewController,只需使用UIViewController并以编程方式创建UITableview即可您可以通过以下方法在UITableViewController内调整tableView的大小
- (void)viewWillAppear:(BOOL)animated
{
[self.tableView setFrame:CGRectMake(x, y, w, h)];
}
它也适用于VIEWDID 试试这个:
- (void)viewDidAppear:(BOOL)animated
{
// Set your tableView frame in UITableViewController
[self.tableView setFrame:CGRectMake(0, 320, 320, 480)];
// To remove the black color space up of the table view and in this case I set it as white
[[[UIApplication sharedApplication] keyWindow] setBackgroundColor:[UIColor whiteColor]];
}
要在使用UITableViewController时调整UITableView的大小,只需覆盖ViewWillLayoutSubview,如下所示:
- (void)viewWillLayoutSubviews {
[super viewWillLayoutSubviews];
CGRect frame = self.view.superview.bounds;
frame.size.width -= 54.0;
self.tableView.frame = frame;
}
还包括self.view.frame=CGRectMake(0,0,300,200);不起作用。确实是:-(void)viewWillLayoutSubviews{[super viewWillLayoutSubviews];CGRect frame=self.view.superview.bounds;frame.size.width-=54.0;self.tableView.frame=frame;}是否有办法将UITableViewController转换为UIViewCOntroller,或者我必须完全复制所有代码?!?(我没有使用nib文件)您无法转换它,但是如果您创建了一个新的UIViewController(带或不带nib),您可以从UITableViewController复制粘贴所有UITableViewDelegate和UITableViewDatasource方法。注意,按照上面的步骤,您将新控制器设置为内部tableView的委托和数据源,因此它调用相同的方法。没有NIB的区别在于,您必须执行tableView=[[[UITableView alloc]initWithFrame:CGRectZero样式:UITableView样式分组]自动释放];tableView.delegate=self;dataSource=self;在viewDidLoad方法中,我刚刚转换了它。添加几行。没有NIB很简单。当我这样做时,用户可以看到正在发生的变化。看起来很紧张
- (void)viewWillLayoutSubviews {
[super viewWillLayoutSubviews];
CGRect frame = self.view.superview.bounds;
frame.size.width -= 54.0;
self.tableView.frame = frame;
}