2013-04-06 45 views
0

我一直在寻找很多,但似乎我无法弄清楚。我对iOS开发非常陌生,如果我的做法完全错误,我很抱歉。用IBAction的if语句更改UITextView

这是情况。

我想通过按钮切换我的DetailViewController的内容视图,该按钮应该将您发送到下一个文本视图或相同的视图,但使用不同的文本。

这是我的头文件。

#import <UIKit/UIKit.h> 

@interface DetailViewController : UIViewController 
@property (strong, nonatomic) IBOutlet UITextView *rowContent; 
@property int rowNumber; 
@property (strong, nonatomic) NSString * rowName; 
@property (strong, nonatomic) IBOutlet UIBarButtonItem *rightArrow; 

@end 

我的tableViewController重定向到我的DetailViewContoller取决于我选择的单元格。现在在我的DetailViewController中,我有另一个按钮,我想切换到下一个文本,而不是我回到tableViewController并选择一个不同的单元格。

//DetailViewController 
//set the title of the view 
self.title = rowName; 

//set the UITextView basec on rowNumber 
switch (rowNumber) { 
    case 0: 
     rowContent.text = [NSString stringWithContentsOfFile:[[NSBundle mainBundle]pathForResource:@"file" ofType:@"txt"] encoding:NSUTF8StringEncoding error:nil]; 
     break; 
    case 1: 
     rowContent.text = [NSString stringWithContentsOfFile:[[NSBundle mainBundle]pathForResource:@"file1" ofType:@"txt"] encoding:NSUTF8StringEncoding error:nil]; 
     break; 
    case 2: 
     rowContent.text = [NSString stringWithContentsOfFile:[[NSBundle mainBundle]pathForResource:@"file2" ofType:@"txt"] encoding:NSUTF8StringEncoding error:nil]; 
     break; 
    case 3: 
     rowContent.text = [NSString stringWithContentsOfFile:[[NSBundle mainBundle]pathForResource:@"file3" ofType:@"txt"] encoding:NSUTF8StringEncoding error:nil]; 
     break; 
    default: 
     break; 


//TableViewController 
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
//create and instance of our DetailViewController 
DetailViewController * DVC = [[DetailViewController alloc]init]; 
//set the DVC to the destinationViewContoller 
DVC = [segue destinationViewController]; 
//get the indexPath 
NSIndexPath * path = [self.tableView indexPathForSelectedRow]; 

NSString * theList = [rowList objectAtIndex:path.row]; 
DVC.rowNumber = path.row; 
DVC.rowName = theList; 


} 
+0

那么问题是什么? – rdelmar 2013-04-06 04:53:34

+0

如何连接我的UIBarbuttonItem按钮以显示下一个单元格上下文,即文本,而不必返回并选择它。 – ZeroOne 2013-04-06 05:00:06

+0

选择此@属性(强,非原子)IBOutlet UIBarButtonItem * rightArrow;应该将我重定向到下一个单元格。所以,如果我在情况下0,我按下按钮,它应该切换到案例1 ...感谢您的帮助顺便说一句。 – ZeroOne 2013-04-06 05:04:40

回答

0

你的问题有点混乱。如果你想切换到下一个案例,从一个按钮,只需写rowNumber ++;在你的按钮方法中,然后调用switch语句所在的方法。

+0

这不起作用。 :| self.navigationItem.rightBarButtonItem = rightArrow; rightArrow = rowNumber ++; – ZeroOne 2013-04-06 06:17:40

+0

@ZeroOne,我没有说让按钮等于rowNumber ++,这根本没有意义。在按钮的IBAction中,有一行只是rowNumber ++;这将增加rowNumber。然后你必须调用你有任何切换语句的方法。 – rdelmar 2013-04-06 06:21:51

+0

我已经添加了我的TableVIewController代码。对于我来说,path.row也有点令人困惑? – ZeroOne 2013-04-06 10:10:26

0

如果我正确地理解了这个问题,这听起来像你正在尝试做类似于我最近在应用程序中做的事情。也就是说,在导航控制器中有一个表格视图,当您选择一个单元格时,它将转到一个细节视图,然后您希望能够在不同的细节视图之间导航,而无需返回表格视图来选择另一个单元格。

我用UIPageViewController做了这个。实现起来有点复杂,但是使用起来很干净。它的工作方式是当你点击一个单元格时,它会转到一个包含UIPageViewController的视图,然后根据点击哪个单元格来加载适当的'页面'。 UIPageViewController处理在页面之间来回移动。您提供了一个充当UIPageViewController数据源的模型控制器。它的作用是为给定索引(页码)返回一个详细视图控制器。为了让UIPageViewController为每个页面加载适当的数据,可以使用相同的数据填充表格视图。

假设你的表格中有三个单元格。您点击中间的一个,然后使用UIPageViewController加载视图。当单元格被点击并且您正在转换到详细视图时,您会告诉它哪个单元被点击。 UIPageViewController然后使用这个信息加载正确的细节视图。当用户想要在页面之间导航时,UIPageViewController只是简单地加载下一页或上一页的数据以及表格视图中对应于该单元格的数据。

请注意,UIPageViewController不知道或关心表视图,它只是使用表视图用于加载其数据的相同源数据(例如数组)。

文档here