如何固定Tableview到屏幕

时间:2013-12-19 21:19:25

标签: ios objective-c tableview xcode5 iphone-3gs

我在xib文件上添加了Tableview(你可以在图像上看到).tableview正在加载。但最后一个单元格不在屏幕上,所以当我向上滑动时,最后一个索引显示出来。当我离开我的手时,最后的细胞不会出现。我没有改变任何高度的tableview。为什么不固定在我的屏幕上?

我在这个项目中使用像facebook这样的揭示菜单:https://github.com/mikefrederick/MFSideMenu

此外,你可以看到电影上的问题。

https://www.dropbox.com/s/usfwdhl5w9znkl6/IMG_0006.MOV

movie:

viewcontroller.h

@property(nonatomic,retain)IBOutlet UITableView * tableview;

viewcontroller.m

-(void)viewDidAppear:(BOOL)animated
{
     self.tableview.backgroundColor=[UIColor colorWithRed:(28/255.0) green:(28/255.0) blue:(28/255.0) alpha:1];
     [self.tableview setSeparatorColor:[UIColor blackColor]];

}
- (void)viewDidLoad
{
    [super viewDidLoad];




    if ([self respondsToSelector:@selector(edgesForExtendedLayout)])
        self.edgesForExtendedLayout = UIRectEdgeNone;

}
#pragma mark -
#pragma mark - UITableViewDataSource


- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return 2;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    if (section==0)
    {
        return 5;
    }
    if (section==1)
    {
        return 3;
    }
    return 0;
}

- (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];
    }
    cell.textLabel.text =@"exampleCell";



    NSLog(@"cell.contentView.bounds.size.width %1.0f",cell.contentView.bounds.size.width);
    return cell;
}
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
    if(section == 1)
        return 40;
    return 0;
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
   self.tableview.layer.cornerRadius = 10.0f;
    tableView.layer.borderWidth = 2.0;
    tableView.layer.borderColor = [UIColor redColor].CGColor;
    return 60;


}
#pragma mark UITableViewDelegate
- (void)tableView: (UITableView*)tableView
  willDisplayCell: (UITableViewCell*)cell
forRowAtIndexPath: (NSIndexPath*)indexPath
{

    cell.backgroundColor =[UIColor colorWithRed:(41/255.0) green:(41/255.0) blue:(41/255.0) alpha:1];
    cell.textLabel.backgroundColor = [UIColor clearColor];
    cell.detailTextLabel.backgroundColor = [UIColor clearColor];
    if([indexPath row] == ((NSIndexPath*)[[tableView indexPathsForVisibleRows] lastObject]).row){
        //end of loading
        //for example [activityIndicator stopAnimating];

    }
}

- (UIView *) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
    UIView *headerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, tableView.bounds.size.width, 30)];
    [headerView setBackgroundColor:[UIColor colorWithRed:(112/255.0) green:(112/255.0) blue:(112/255.0) alpha:1]];
    UILabel *titleLabel = [ [UILabel alloc] initWithFrame:CGRectMake(20, 0, 300, 44)];

    titleLabel.text = @"MÜŞTERİ ALANI";

    titleLabel.textColor = [UIColor whiteColor];

    titleLabel.backgroundColor = [UIColor clearColor];

    [headerView addSubview:titleLabel];
    return headerView;
}

3 个答案:

答案 0 :(得分:1)

在您的视频中,此菜单似乎是一个幻灯片菜单,可能是使用了某些第三方幻灯片菜单控制器库。所以这个视图控制器包含在一些容器视图中。滑出式菜单控制器可能无法正确调整视图控制器的大小以适合其容器视图。

一种解决方案是检查您正在使用的滑出控制器附带的任何示例应用程序,以查看它们是否受到该错误的影响,并在发生这种情况时向开发人员报告。这将是好的,因为其他开发人员将从这些改进中受益。事实上,您正在使用的滑出控制器可能已经使用您尚未拥有的新版本修复了此错误。

另一种解决方案,假设有一个不受此影响的示例应用程序,就是看它是如何添加其滑出菜单,看看你是否未能做他们正在做的事情。

最后,如果没有示例应用或您无法弄清楚为什么他们的工作方式不同,请尝试将以下内容添加到视图控制器的viewDidAppear:方法中:

self.view.frame = self.view.superview.bounds;

这假设他们创建的容器视图大小合适。

答案 1 :(得分:0)

您的问题似乎出现在 xib 中。 您必须将视图的大小设置为“自由格式”,然后在视图上添加自动调整大小限制,就像在tableView上一样。

Freeform

Autosizing

答案 2 :(得分:0)

首先应选择CELL,而不是TABLE VIEW。接下来,转到属性检查器并单击分隔符,然后应选择自定义插入。最后,您可以根据自己的意愿调整分隔线。希望这会对你和他人有所帮助。也谢谢你的问题。