我有一个iOS 6应用程序,我在StoryBoard中使用Xcode 5转换为iOS 7。一切正常,直到我决定在将应用程序转换为iOS 7之后将自定义UITableViewCell添加到tableview控制器。我创建了通常的代码来执行此操作但是当我运行应用程序时它会产生意外的结果,只显示内容一个单元格行和它在桌面视图上方的浮动类型,它显示了它背后的空单元格行。当我滚动表格行时,我看到它们在后台滚动,并且在滚动时一个视图单元格行中显示的数据会发生变化(参见附图)。但是,如果我单击看起来像空行的内容,它可以正常工作,并且可以正确地分割到详细视图控制器。我在iOS 6中使用Xcode 4.6在我的其他macbook上对应用程序进行了相同的更改,它运行正常(参见附图)。所以我认为iOS 7处理uitableviewcell类的方式与iOS 6不同,或者我在iOS 7应用程序的代码中犯了一个错误而没有实现它。
以下是无法正常运行的iOS 7代码:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *cellIdentifier = @"Cell";
ExhibitorsViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
if (!cell) {
cell = [[ExhibitorsViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
}
if (tableView == self.myTableView){
NSManagedObject *object = [self.objects objectAtIndex:indexPath.row];
cell.nameLabel.text = [object valueForKey:@"name"];
NSString * booth = [NSString stringWithFormat:@"Booth Number: %@", [object valueForKey:@"boothLabel"]];
cell.boothNumberLabel.text = booth;
}
else{
NSManagedObject *object = [results objectAtIndex:indexPath.row];
cell.nameLabel.text = [object valueForKey:@"name"];
NSString * booth = [NSString stringWithFormat:@"Booth Number: %@", [object valueForKey:@"boothLabel"]];
cell.boothNumberLabel.text = booth;
}
return cell;
}
这是适用的iOS 6代码(对我而言似乎是相同的,但我想我需要其他眼睛来查看它):
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath: (NSIndexPath *)indexPath
{
static NSString *simpleTableIdentifier = @"Cell";
ExhibitorsViewCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
if (!cell) {
cell = [[ExhibitorsViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier];
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
}
if (tableView == self.myTableView){
NSManagedObject *object = [self.objects objectAtIndex:indexPath.row];
cell.nameLabel.text = [object valueForKey:@"name"];
NSString * booth = [NSString stringWithFormat:@"Booth Number: %@", [object valueForKey:@"boothLabel"]];
cell.boothNumberLabel.text = booth;
}
else{
NSManagedObject *object = [results objectAtIndex:indexPath.row];
cell.nameLabel.text = [object valueForKey:@"name"];
NSString * booth = [NSString stringWithFormat:@"Booth Number: %@", [object valueForKey:@"boothLabel"]];
cell.boothNumberLabel.text = booth;
}
return cell;
}
Here是iOS 7应用中发生的事情的屏幕截图。
Here应该是什么样的(这是在我自定义UITableViewCell更改之前)。
答案 0 :(得分:0)
我明白了。我不得不将uilabel拖到uitableviewcell上方,直到我看到细胞边界突出显示。这将标签放在单元格上方。然后我不得不将标签移回视单元。从来没有在xcode 4.6中这样做。但是,哦,好吧。