0

私のストーリーボードには、Navigation Controller、Table View Controller、Detail View Controller が含まれています。TableViewで選択された「セル」に関連するテキストを詳細ビューコントローラに表示するにはどうすればよいですか?

現在、セルが選択されている場合に画像が表示されるようにコードを設定しています。「セル 1」が選択された場合は「画像 1」が表示され、「セル 2」が選択された場合は「画像 2」が表示されます。

- (void)viewDidLoad
{
    [super viewDidLoad];



//Create a couple UIImage objects
UIImage *firstImage = [UIImage imageNamed:@"first.png"];
UIImage *secondImage = [UIImage imageNamed:@"second.png"];
UIImage *thirdImage = [UIImage imageNamed:@"third.png"];

//Title of the view
self.title = charName;

//UIImageview based on characterNumber
switch (characterNumber) {
    case 0:
        CharacterImage.image = firstImage;
        break;

    case 1:
        CharacterImage.image = secondImage;
        break;

    case 2:
        CharacterImage.image = thirdImage;
        break;

    default:
        break;
}

}

これを行うには、画像ではなくテキストを使用しますか? そのため、Table View Controller から「Cell 1」が選択されると、他のセルが選択された場合に表示されるテキストとは異なる、スクロール可能なテキストを持つ DetailViewController につながります。「UITextView」を使用して、別の .txt ファイルをアップロードしますか? ありがとう

そのため、Table View Controller から「Cell 1」を選択すると、スクロール可能なテキストを含む DetailViewController が表示されます。

4

2 に答える 2

0

ストーリーボードに UIViewcontroller を追加し、それをコマンド + ドラッグでテーブル ビュー コントローラーに接続し、矢印をクリックしてセグエ名を入力し、プッシュを選択します。

あなたのtableview controller.mで

//#pragma mark - Table Did Select 
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    [self performSegueWithIdentifier:@"segueNameGoesHere" sender:self];

}
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{

    if([[segue identifier] isEqualToString:@"segueNameGoesHere"])
    {
       DetailViewController *detailViewController  = [segue destinationViewController];
        //This will display on the Document Viewer
        detailViewController.fileText=@"What Ever your Text is"; // you can also select that text source from an nsmutablearray , a file or cloud solution but in that case you need to write a method that returns a string to you 
    }
}

あなたの詳細ビューコントローラーで.h

@interface DetailviewViewController: UIViewController {
    UITextView *exampleTxt;
}
@property (nonatomic, strong)NSString *fileText;

あなたの詳細ビューのcontroller.mで

@synthesize fileText=_fileText

// you can create your textview in IB or programatically like below after that all you need to this set your text  
- (void)viewDidLoad 
{
    [super viewDidLoad ];
    exampleTxt = [[UITextView alloc] initWithFrame:CGRectMake(100, 100, 100, 100)];
    [exampleTxt setText:_fileText]; // look at here
    //[exampleTxt setColor:[UIColor redColor]]; //yes, it's deprecated, but works
    [self.view addSubview: exampleTxt];

}

プログラムで ui テキスト ビューを追加したくない場合は、IB に追加できます。したがって、IB に TextView を追加するには、次の手順に従います。

ストーリーボードの詳細ビュー コントローラーに移動し、TextView を detailViewController にドラッグ アンド ドロップします。

detailviewController.h

@interface DetailviewViewController:  : UIViewController
{
    UITextView *textView;
}

@property(nonatomic,strong)IBOutlet UITextView *textView; 
@property (nonatomic, strong)NSString *fileText;

あなたのdetilviewcontroller.mで

@synthesize textView=_textView;
@synthesize fileText=_fileText;


- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    //[_textView setText:@"Your text"]; 
    [_textView setText:_fileText];
}
于 2012-12-20T16:26:11.580 に答える
0

ViewControllers の間に Segue を作成する必要があります (ctrl + ドラッグして別のものに移動します)。次に、識別子を追加します。

次に、 didSelectRowAtIndexPath メソッドからそれを呼び出し、indexPath を数値として送信する必要があります。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    [self performSegueWithIdentifier:@"DetailSegue" sender:[NSNumber numberWithInt:indexPath.row]];
}

次に、番号を取得して新しいviewControllerに追加できます

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(NSNumber*)indexNumber
{
    if([[segue identifier] isEqualToString:@"DetailSegue"]){

        NSInteger index = [indexNumber integerValue];

        DetailViewController *detailView = [segue destinationViewController];
        detailView.textNumber = index;

    }
}

もちろん、NSInteger textNumber を DetailViewController に追加する必要があります。次に、どの NSInteger が選択されているかを確認し、別のテキストを表示します。

于 2012-12-20T16:16:10.317 に答える