0

いろいろ調べたのですが、どうしても分からないようです。私は iOS 開発にかなり慣れていないので、完全に間違っていることをお詫びします。

これが状況です。

ボタンを使用して 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;


}
4

2 に答える 2

0

私が質問を正しく理解していれば、私が最近アプリで行ったことと同様のことをしようとしているように思えます。つまり、セルを選択すると詳細ビューに移動するナビゲーション コントローラーにテーブル ビューがあり、テーブル ビューに戻って別のセルを選択することなく、異なる詳細ビュー間を移動できるようにする必要があります。

UIPageViewController を使用してこれを行いました。実装は少し複雑ですが、使用するのに適したクリーンな方法です。それが機能する方法は、セルをタップすると、タップされたセルに応じて適切な「ページ」をロードする UIPageViewController を含むビューに移動することです。UIPageViewController は、ページ間の前後の移動を処理します。UIPageViewController のデータ ソースとして機能するモデル コントローラーを提供します。その役割は、特定のインデックス (ページ番号) の詳細ビュー コントローラーを返すことです。UIPageViewController が各ページに適切なデータをロードするようにするには、テーブル ビューの作成に使用しているのと同じデータをフィードします。

テーブルに 3 つのセルがあるとします。中央のものをタップすると、UIPageViewController でビューが読み込まれます。セルがタップされ、詳細ビューに移行するときに、どのセルがタップされたかを伝えます。次に、UIPageViewController はこの情報を使用して、正しい詳細ビューを読み込みます。ユーザーがページ間を移動したい場合、UIPageViewController は、テーブル ビュー内のそのセルに対応するデータを使用して、次または前のページのデータをロードするだけです。

UIPageViewController は、テーブル ビューを認識したり気にしたりしないことに注意してください。テーブル ビューがデータを読み込むために使用するのと同じソース データ (配列など) を使用しているだけです。

ドキュメンテーションはこちら

于 2013-04-07T01:55:42.050 に答える
0

あなたの質問は少し混乱しています。ボタンから次のケースに切り替えたい場合は、rowNumber ++; と書くだけです。ボタンメソッドで、switch ステートメントがあるメソッドを呼び出します。

于 2013-04-06T05:09:40.587 に答える