gpt4 book ai didi

ios - 表格 View 元素的重复

转载 作者:行者123 更新时间:2023-11-29 03:26:02 24 4
gpt4 key购买 nike

您好,我知道之前有人问过这个问题。不幸的是,我尝试了以前的解决方案但无济于事。我想要做的是让我的 UISwitch 在表格 View 上滚动时出现而不是 self 复制。这是我目前的尝试,但是根本没有显示 UISwitch。对于我做错了什么的任何帮助将不胜感激!

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

if (!cell) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier];
}

Restaurant *restaurant = [restaurants objectAtIndex:indexPath.row];

UISwitch *notificationSwitch = [[UISwitch alloc] initWithFrame:CGRectMake(245, 15, 79, 27)];
[notificationSwitch addTarget:self action:@selector(switchChanged:) forControlEvents:UIControlEventValueChanged];
[cell.contentView addSubview:notificationSwitch];

cell.textLabel.text = restaurant.name;
cell.detailTextLabel.text = restaurant.hours;
return cell;
}

最佳答案

What I am trying to do is to get my UISwitch to appear and not duplicate itself when scrolling on the table view

您似乎希望所有单元格中都出现一个 UISwitch
要解决此问题,您不应在 -cellForRowAtIndexPath 中创建对象,而应将此代码移动到 -viewDidLoad 中,然后稍后将此对象放在可重复使用的单元格上。


基本上...
这应该位于您的 -viewDidLoad 中:

//IMPORTANT: declare "UISwitch *notificationSwitch;" in the .h of this class
notificationSwitch = [[UISwitch alloc] initWithFrame:CGRectMake(245, 15, 79, 27)];
[notificationSwitch addTarget:self
action:@selector(switchChanged:)
forControlEvents:UIControlEventValueChanged];

只有这个应该保留在您的-cellForRowAtIndexPath

[cell.contentView addSubview:notificationSwitch];

因此,我们只创建一次对象,并将同一对象多次添加到单元格中,而不是在 -cellForRowAtIndexPath 中创建多个对象(它们只是看起来相同,但实际上是不同的对象)


PS:我假设您的委托(delegate)和数据源已正确连接,即执行流程确实到达-cellForRowAtIndexPath

关于ios - 表格 View 元素的重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20451645/

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