2012-05-18 87 views
0

我有这段代码来显示特定章节的一些文本,我正在使用核心文本。但我的需要是,当第一章的文本结束时,它想要显示下一章文本在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的是,我通过核心text.so我需要的是我在“组合拳”第一章的文字。所以我想追加与下一章结合,代码呈现文本视图为显示下一章是

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

合并包含这样的文字... 1 haii这是我的第一句话2这是我的第二句话3这是我的第三句话,蚀刻etc ..所以如果第三句话是最后一段文字,那么在/ n换行我需要下一章文字.. 我把这个按钮中的代码导航到下一章,但在结束每章之后我会自动需要它。

是否有可能? 在此先感谢。

+0

我的理解是否正确:'allSelectedVerseEnglish'返回所选章节的所有经文,并且没有方法通过章节号来获取经文? –

+0

@ A-Live是的,它返回所选章节的所有诗句,没有方法可以按照章节号码 – stackiphone

+0

@ A-Live获得诗句,但我可以选择书籍,章节和诗句 – stackiphone

回答

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,代码仅仅是一个草稿,并且有要实施的方法。

+0

让我chi,非常感谢 – stackiphone

+0

我不知道如何cacuate每章的线条,我很惊讶there.but你的代码是真正正确的。但我不认为我能想出它out.its我的错误。 – stackiphone

+0

我不知道你的'multiPageView'实现是什么,如果这是一个'UIScrollView'子类(就像'UITextView'),那么不用添加新行,你可以在while循环的下一章添加完整的经文。停止的条件将是a)添加所有经文b)'multiPageView.contentSize。height> kMultiPageViewHeight',那么你可以改变“page”'contentInset'来截取b)或'contentSize'的多余行,并且预定义的宽度和高度为a)。希望能帮助到你。 –