0

我有这段代码来显示特定章节的一些文本,我正在使用核心文本。但我的需要是,当第一章的文本结束时,它想在换行符中显示下一章文本。我显示文本的代码是

NSMutableString *combined = [NSMutableString string];

    for(NSUInteger idx = 0; idx < [delegatee.allSelectedVerseEnglish count]; idx++) {
        [combined appendFormat:@"  %d %@", 
         idx + 1, 
         [delegatee.allSelectedVerseEnglish objectAtIndex:idx]];

    }

    self.multiPageView.text =combined;

multipageview 是我通过核心文本呈现文本的视图。所以我需要在“组合”中有第一章文本。所以我想将组合附加到下一章,显示下一章的代码是

delegatee.selectedChapter = [NSString stringWithFormat:@"%d",[delegatee.selectedChapter intValue] + 1];
    [delegatee reloadVerses];
    [self resetReadViewToVerse:1];

组合包含这样的文本...1 haii 这是我的第一句 2 这是我的第二句 3 这是我的第三句 ,,etch etc..so 如果第三句是最后一个文本,那么在 /n 换行中我需要下一章文本..我将此代码放在按钮中以导航到下一章,但在每章结束后我会自动需要它。

是否可以?提前致谢。

4

1 回答 1

0

首先,您可能需要准备一种方法来通过章节编号接收经文(以获取您想要显示的下一章的经文)。

在您的for循环之间,self.multiPageView.text =combined;您应该计算最后一个“页面”中占用的行数,这允许您根据最大“页面”行数计算下一章要填充的行数。

现在,当您同时拥有下一章的经文和要添加的行数时,您可以很容易地附加下一章的行以使用while循环填充“页面”。有两个重要的条件需要考虑:

  • 可能没有下一章 - 您跳过下一章文本附加,禁用下一章按钮等。
  • 最后一个“页面”上没有空行,但有下一章 - 您跳过下一章文本附加,但下一章按钮已启用

生成的代码如下所示:

NSMutableString *combined = @"";
NSArray * selectedChapterVersesArray = [delegatee.allVersesForLanguage:kEngLang atChapter:delegatee.selectedChapter];

if (selectedChapterVersesArray != nil && [selectedChapterVersesArray count] > 0)

// prepare the selected chapter text
for(NSUInteger idx = 0; idx < [selectedChapterVersesArray count]; idx++) {
    [combined appendFormat:@"  %d %@ \n", 
     idx + 1, 
     [selectedChapterVersesArray objectAtIndex:idx]];

}

// calculate the lines found to be added from the next chapter - to be implemented !
NSUInteger linesToAddFromNextChapter = [self emptyLinesForMultipageView:self.multipageview withText:combined];

if (delegatee.numberOfChapters > delegatee.selectedChapter)
{
// there's a next chapter
NSArray * nextChapterVersesArray = [delegatee.allVersesForLanguage:kEngLang atChapter:delegatee.selectedChapter+1];

// append the next chapter text
NSUInteger linesAdded = 0;
BOOL nextChapterHasLinesToAdd = [nextChapterVersesArray count] > 0;

while (linesAdded < linesToAddFromNextChapter && nextChapterHasLinesToAdd) {
  // append one line, inc linesAdded, recalculate nextChapterHasLinesToAdd
}
}
}

self.multiPageView.text =combined;
delegatee.selectedChapter = [NSString stringWithFormat:@"%d",[delegatee.selectedChapter intValue] + 1];
[delegatee reloadVerses];
[self resetReadViewToVerse:1];

请注意,您在格式文字中丢失了换行符\n,代码只是草稿,还有一些方法要实现。

于 2012-05-18T14:52:26.277 回答