我正在开发一个类似于联系人应用的应用。它有一个项目列表,每个项目都有一个详细信息视图。详细视图是一个表格视图,显示名称,地点,值等值。但是,如果地方没有值,我不希望它的部分出现,以便详细视图中没有空白单元格。我有6个部分。即使未分配值,第2部分也应始终显示,第5部分有两行。所有其他部分都有1行。 我看了其他问题;但是,我没有取得多大成功。我目前的代码如下:
- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView {
return sectionTitles;
}
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
if (section == 1) {
if ([[[detailGift givingTo] name] length] == 0) {
return nil;
}
else {
return @"";
}
}
else if (section == 2) {
return @"";
}
else if (section == 3) {
if ([[[detailGift reasonFor] name] length] == 0) {
return nil;
}
else {
return @"";
}
}
else if (section == 4) {
if ([[[detailGift boughtFrom] name] length] == 0) {
return nil;
}
else {
return @"";
}
}
else if (section == 5) {
if ([[formatter stringFromDate:[detailGift dateGiving]] length] == 0 && [[formatter stringFromDate:[detailGift datePurchased]] length] == 0) {
return nil;
}
else {
return @"";
}
}
else {
if ([[detailGift notes] length] == 0) {
return nil;
}
else {
return @"";
}
}
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
if (section == 1) {
if ([[[detailGift givingTo] name] length] == 0) {
return 0;
}
else {
return 1;
}
}
else if (section == 2) {
return 1;
}
else if (section == 3) {
if ([[[detailGift reasonFor] name] length] == 0) {
return 0;
}
else {
return 1;
}
}
else if (section == 4) {
if ([[[detailGift boughtFrom] name] length] == 0) {
return 0;
}
else {
return 1;
}
}
else if (section == 5) {
if ([[formatter stringFromDate:[detailGift dateGiving]] length] == 0 && [[formatter stringFromDate:[detailGift datePurchased]] length] == 0) {
return 0;
}
else if ([[formatter stringFromDate:[detailGift dateGiving]] length] != 0 && [[formatter stringFromDate:[detailGift datePurchased]] length] == 0) {
return 1;
}
else if ([[formatter stringFromDate:[detailGift dateGiving]] length] == 0 && [[formatter stringFromDate:[detailGift datePurchased]] length] != 0) {
return 1;
}
else {
// Crashes after returning value of two
return 2;
}
}
else {
if ([[detailGift notes] length] == 0) {
return 0;
}
else {
return 1;
}
}
}
这对我来说似乎非常混乱,也会导致以下异常: 因未捕获的异常'NSRangeException'而终止应用程序,原因:' * - [__ NSArrayI objectAtIndex:]:索引1超出边界[0 .. 0]'
如果有人能给我一些建议或让我朝着正确的方向前进,我会非常感激! 非常感谢! 斯科特