附加字符串

时间:2012-05-18 14:17:53

标签: iphone ios ios5 nsstring

我正在使用此代码来显示特定章节的一些文本,我正在使用核心文本。但我需要的是,当第一章的文本结束时,它希望在newline.my代码中显示下一章文本以供显示文字是

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这是我的第三句,蚀刻等。如果第三句是最后一个文本,那么在/换行我需要下一章文字.. 我把这个代码放在按钮中导航到下一章,但我在结束每一章后自动需要它。

有可能吗? 提前谢谢。

1 个答案:

答案 0 :(得分: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,代码只是一个草稿,还有一些方法可以实现。