表视图更新后卡住

时间:2014-05-01 05:41:54

标签: ios uitableview scroll

正在使用Xcode 4.6并设置了UItableview,其中单元格是从数组中填充的。在4.6中工作时,视图表现得非常完美,就像我喜欢它一样。更新到5.1.1后,似乎已在表视图上启用滚动,表视图从视图底部加载,顶部的3个填充单元格不可见。有时视图会橡皮筋而不允许我一直向上滚动到顶部,有时它会赢得橡皮筋并且会让我。我对此很新,但是我一直试图搞乱汽车布局,但无济于事。

这是我的代码.h

@interface TableViewController : UITableViewController
@property (nonatomic, strong) NSArray *Manufacturers;
@end

这是我的.m代码:

- (id)initWithStyle:(UITableViewStyle)style
{
self = [super initWithStyle:style];
if (self) {
// Custom initialization
}
return self;
}

- (void)viewDidLoad
{
[super viewDidLoad];


_Manufacturers = @[@"1",
               @"2",
               @"3"];

}

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

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
// Return the number of rows in the section.
return _Manufacturers.count;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath            *)indexPath
{
static NSString *CellIdentifier = @"TableCell";
TableCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier   forIndexPath:indexPath];

// Configure the cell...

int row = [indexPath row];

cell.TitleLabel.text = _Manufacturers[row];


return cell;
}

2 个答案:

答案 0 :(得分:0)

cellForRowAtIndexPath:

如果您使用的是默认UITableViewCell

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath            *)indexPath
{
    static NSString *CellIdentifier = @"TableCell
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"CellIdentifier"];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"MyIdentifier"];

    }
    int row = [indexPath row];
    cell.textLabel.text = _Manufacturers[row];

    return cell;
}

如果您使用的是自定义TableViewCell

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

    SimpleTableCell *cell = (SimpleTableCell *)[tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
    if (cell == nil) 
    {
        NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"SimpleTableCell" owner:self options:nil];
        cell = [nib objectAtIndex:0];
    } 

    cell.nameLabel.text = [tableData objectAtIndex:indexPath.row];

    return cell;
}

答案 1 :(得分:0)

TableCell是自定义而不是代码下面的代码..

 TableCell *cell = (TableCell*)[tableView  dequeueReusableCellWithIdentifier:cellIdentifier];
 NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"TableCell" owner:self options:nil];
 cell = [nib objectAtIndex:0];

否则

 UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
 UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];

查看本教程中的自定义单元格 http://www.appcoda.com/customize-table-view-cells-for-uitableview/