gpt4 book ai didi

IOS UITableViewCells 都混杂在第一个单元格中,尽管只有 Iphone5S 设备,64 位模拟器

转载 作者:可可西里 更新时间:2023-11-01 06:20:43 24 4
gpt4 key购买 nike

我有一个行为异常的 UITableView。具体来说,它有一个恒定的 8 个单元格,在 cellForRowAtIndexPath 中生成,带有一些基本的文本和图像。在模拟器中效果很好。在我的 Iphone5 上,它的工作方式与模拟器相同,但是在我的 Iphone5s 上,单元格都在第一个单元格应该存在的地方相互重叠。下图分别显示了 5s 和 simulator/5。左边的“退出应用程序”按钮应该存在于最后一个单元格中,并且被添加到其他内容之上,也由箭头指出。

编辑:第三张图片是 64 位模拟器,更新后的 cellForRowAtIndexPath 被 super 简化为仅将所有 8 行的 textLabel 设置为“Hello”。

应用中的任何地方都没有使用自动布局。

Iphone 5S运行的是IOS7.1.1,而Iphone5运行的是IOS7.1。该模拟器是最新 Xcode (5.1.1) 的一部分,并随最新的 7.1 一起提供。我无法想象 5s 的最新 .1 会导致这种情况。

有没有想过为什么这是困惑的,特别是为什么只在 5S 上?

iphone5s iphone5 or simulator 64bit

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

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return 8;
}

- (float)tableView:(UITableView*)tableView heightForRowAtIndexPath:(NSIndexPath*)indexPath {
float height = self.view.frame.size.height / [self tableView:tableView numberOfRowsInSection:indexPath.section];
return height;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
NSString *CellIdentifier = @"CellMain";

UITableViewCell *_cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (_cell == nil) {
_cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
_cell.selectionStyle = UITableViewCellSelectionStyleNone;
}

NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
NSString *user_fullname = [userDefaults valueForKey:@"user_fullname"];

_cell.textLabel.textColor = [UIColor colorWithHexString:@"58A5D5"];
_cell.detailTextLabel.textColor = [UIColor colorWithHexString:@"58A5D5"];
if(indexPath.row == 0){
_cell.textLabel.text = [NSString stringWithFormat:@"%@",@"User Name"];//user_fullname];
_cell.detailTextLabel.text = [NSString stringWithFormat:@"Member since: %@", @"April 28, 2014"];
_cell.imageView.image = [UIImage imageNamed:@"profile_photo.png"];
_cell.imageView.contentMode = UIViewContentModeScaleAspectFit;

UIImageView *arrowImg = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"arrow_right.png"]];
arrowImg.frame = CGRectMake(292, 14, 18, 30);
[_cell.contentView addSubview:arrowImg];
} else if(indexPath.row == 1){
_cell.textLabel.text = [NSString stringWithFormat:@"ActivitySync"];
_cell.detailTextLabel.text = [NSString stringWithFormat:@"Last sync: %@", @"5 minutes ago"];
_cell.imageView.image = [UIImage imageNamed:@"iphone_sm.png"];
_cell.imageView.contentMode = UIViewContentModeScaleAspectFit;
} else if(indexPath.row == 2){
_cell.contentView.backgroundColor = [UIColor colorWithHexString:@"D9DBDB"];
} else if(indexPath.row == 3){
_cell.textLabel.text = [NSString stringWithFormat:@"%@",@"Challenges"];
UIImageView *arrowImg = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"arrow_right.png"]];
arrowImg.frame = CGRectMake(292, 14, 18, 30);
[_cell.contentView addSubview:arrowImg];
} else if(indexPath.row == 4){
_cell.textLabel.text = [NSString stringWithFormat:@"%@",@"Setup a New Device"];
UIImageView *arrowImg = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"arrow_right.png"]];
arrowImg.frame = CGRectMake(292, 14, 18, 30);
[_cell.contentView addSubview:arrowImg];
} else if(indexPath.row == 5){
_cell.textLabel.text = [NSString stringWithFormat:@"%@",@"Help"];
UIImageView *arrowImg = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"arrow_right.png"]];
arrowImg.frame = CGRectMake(292, 14, 18, 30);
[_cell.contentView addSubview:arrowImg];
} else if(indexPath.row == 6){
_cell.contentView.backgroundColor = [UIColor colorWithHexString:@"D9DBDB"];
} else if(indexPath.row == 7){
UIButton *logout = [[UIButton alloc] initWithFrame:CGRectMake(10, 9, 300, 39)];
[logout setTitle:@"Log Out of App" forState:UIControlStateNormal];
logout.titleLabel.textColor = [UIColor colorWithHexString:@"58A5D5"];
[logout addTarget:self action:@selector(logoutBtnClicked:) forControlEvents:UIControlEventTouchUpInside];
[_cell.contentView addSubview:logout];
}

return _cell;
}

最佳答案

从您的 heightForRow 方法返回 CGFloat,而不是 float。这是一个 64 位问题 - 那里的类型定义不同。我认为返回一个 float 会导致高度在 64 位设备中被视为零。

您需要更改方法的返回类型,以及其中的声明。不要对 UIKit 的东西使用 float,它总是 CGFloat。

关于IOS UITableViewCells 都混杂在第一个单元格中,尽管只有 Iphone5S 设备,64 位模拟器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23570068/

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