我只是尝试为 iPhone 和 iPad 创建一个应用程序。为此,我创建了一个表格视图,该表格视图创建的单元格期望应用程序加载时将收到的 json。方法内部
tableView:cellForRowAtIndexPath:
我启动将用于 iPhone 的单元格,并从 json 中设置特定值。我使用的单元格是我使用新对象和 NIB 文件创建的自定义单元格。代码如下所示:
static NSString *CellIdentifier = @"tvChannelIdentifier";
tvChannelCell *cell = (tvChannelCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"tvChannelCell" owner:self options:nil];
cell = [nib objectAtIndex:0];
}
....
现在我尝试让该应用程序也可以在 iPad 上运行,我创建了一个新的自定义单元格,还包含一个新对象和一个 NIB 文件。变量的名称与 customIPhoneCell 中的名称相同,因此我不必更改整个代码。我刚刚在 tableView:cellForRowAtIndexPath: 中插入了一个开关,以便显示正确的单元格,但代码无法访问它:
static NSString *CellIdentifier = @"tvChannelCell";
static NSString *IPadCellIdentifier = @"tvChannelIPadCell";
//determination which device ---> choose cell
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone){
tvChannelCell *cell = (tvChannelCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
}else{
tvChannelIPadCell = (tvChannelIPadCell *) [tableView dequeueReusableCellWithIdentifier:IPadCellIdentifier];
}
我试图在类的顶部定义单元格对象,但是我不能使用相同的变量名。我还尝试选择 iPad 的 NIB 文件来检查它是否会显示,但没有任何反应。我试图在顶部设置一个 UITableviewcell,
UITableViewCell *cell
并在 cellForRowAtIndexPath 中的开关内设置特定的单元格类型,但随后无法访问变量。
所以我的问题是,是否可以在 tableview 方法中进行此切换,或者我是否必须为每个单元格类型都有自己的变量名的每个设备编写几个部分?