gpt4 book ai didi

ios - 从 Nib 加载多个自定义单元格

转载 作者:行者123 更新时间:2023-11-28 22:40:15 26 4
gpt4 key购买 nike

如果我只返回 1 行单元格,这就完美了。但是如果我输入超过 1 个,我会收到错误消息:“index 1 beyond bounds [0 .. 0]”

我制作了一个 xib 文件,其中有一个设计独特的表格单元格,我只想一遍又一遍地使用它,只更改一些标签。我是不是用错了方法?

    - (void)viewDidLoad
{
[super viewDidLoad];

// Uncomment the following line to preserve selection between presentations.
// self.clearsSelectionOnViewWillAppear = NO;

// Uncomment the following line to display an Edit button in the navigation bar for this view controller.
// self.navigationItem.rightBarButtonItem = self.editButtonItem;
}

- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}

#pragma mark - Table view data source

- (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 2;
}


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

SectionCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];

if (cell == nil)
{


NSArray * nib = [[NSBundle mainBundle] loadNibNamed:@"ButtonCell" owner:self options:nil];

cell = [[SectionCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"Cell"];

cell = (SectionCell *)[nib objectAtIndex:0];

}


cell.backgroundView.layer.masksToBounds = YES;
cell.backgroundView.layer.cornerRadius = 20.0;

cell.name.text=@"Cell Test";


tableView.backgroundView = nil;
tableView.backgroundColor = [UIColor clearColor];
return cell;
}

/*
// Override to support conditional editing of the table view.
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
{
// Return NO if you do not want the specified item to be editable.
return YES;
}
*/


- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
return 78;
}

最佳答案

更改此代码片段:

if (cell == nil)
cell = [[[SectionCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier] autorelease];

并删除您的 NSBundle 逻辑,因为它不再是必需的,因为您正在自己实例化单元格对象。

例子:

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

cell.backgroundView.layer.masksToBounds = YES;
cell.backgroundView.layer.cornerRadius = 20.0;
cell.name.text=@"Cell Test";
tableView.backgroundView = nil;
tableView.backgroundColor = [UIColor clearColor];
return cell;
}

提示:

没有必要按照您的方式不断设置您的表格 View 背景。您可以在首次加载对象时设置它。

关于ios - 从 Nib 加载多个自定义单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14736913/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com