0

ナビゲーションコントローラーによって固定されたマルチスクリーンアプリがあります。1つの画面で、UIScrollView内のUILabelに入力された静的テキストが完全にスクロールします。別の画面では、同じ形式に従って、独自のUIScrollView内にスクロール可能なUILabelを作成しました。今回のみ、同じ画面のpickerViewで選択が行われたときにアクセスされるplistファイルから取得されたものに基づいてスクロールテキストが異なります。その結果、テキストが表示され、新しいピッカーアイテムが選択されると正しく変更されますが、テキストはスクロールしません。

私はこの解決策を見つけましたが、それを自分の状況に適用する方法がわかりません。

UILabelの代わりにUITextViewを使用する方法についても読みましたが、Xcode(v.4.5)のストーリーボードの接続インスペクターで参照アウトレットを作成する方法がわかりません。グラフィックインターフェイスに依存する代わりに、これをコーディングする方法があるかもしれないと思います。

これが私の実装ファイルの関連部分です。「用語」はpickerViewで選択され、「定義」はUILabelに表示されるものです。

@implementation InsuranceGlossaryViewController
@synthesize termPicker, termArray, definitionArray;
@synthesize termLabel, definitionLabel;

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}

- (void)viewDidLoad
{
    [scroller setScrollEnabled:YES];
    [scroller setContentSize:CGSizeMake(280, 2400)];
    NSString *path = [[NSBundle mainBundle] pathForResource:@"Glossary" ofType:@"plist"];
    NSDictionary *dict = [[NSDictionary alloc] initWithContentsOfFile:path];
    self.termArray = [dict objectForKey:@"Term"];
    self.definitionArray = [dict objectForKey:@"Definition"];

    [super viewDidLoad];
    // Do any additional setup after loading the view.
}

- (void)viewDidUnload
{
    [super viewDidUnload];
    // Release any retained subviews of the main view.
    self.termArray = nil;
    self.definitionArray = nil;
    self.termLabel = nil;
    self.definitionLabel = nil;
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return YES;
}

- (NSInteger)numberOfComponentsInPickerView:
(UIPickerView *)pickerView
{
    return 1;
}

- (NSInteger)pickerView:(UIPickerView *)pickerView
numberOfRowsInComponent:(NSInteger)component
{
    return [termArray count];
}
- (NSString *)pickerView:(UIPickerView *)pickerView
             titleForRow:(NSInteger)row
            forComponent:(NSInteger)component
{
    return [termArray objectAtIndex:row];
} 

-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row
      inComponent:(NSInteger)component
{
    NSString *resultString = [[NSString alloc] initWithFormat:
                              @"%@",
                              [definitionArray objectAtIndex:row]];
    definitionLabel.text = resultString;
    NSString *termString = [[NSString alloc] initWithFormat:
                              @"%@",
                              [termArray objectAtIndex:row]];
    termLabel.text = termString;

}

そして、ここにヘッダーファイルからのコードがあります:

@interface InsuranceGlossaryViewController : UIViewController
<UIPickerViewDelegate, UIPickerViewDataSource, MFMailComposeViewControllerDelegate>
{
    UIPickerView       *termPicker;
    NSArray            *termArray;
    NSArray            *definitionArray;
    UILabel            *termLabel;
    UILabel            *definitionLabel;
    IBOutlet UIScrollView *scroller;
}
- (IBAction)showEmail:(id)sender;
@property (strong, nonatomic) IBOutlet UIPickerView *termPicker;
@property (strong, nonatomic) IBOutlet UILabel *termLabel;
@property (strong, nonatomic) IBOutlet UILabel *definitionLabel;
@property (strong, nonatomic) NSArray *termArray;
@property (strong, nonatomic) NSArray *definitionArray;

どんな助けでも大歓迎です。

編集:UITextViewフィールドが起動して実行されているようです。少なくとも、スワイプするとスクロールしているのがわかります。私が理解できないのは、「definitionLabel」を表示する方法です。UILabelを使用して、definitionLabelへの参照アウトレットを設定することができました。ただし、UITextViewは同じようには機能しません。私は困惑していて、上司はこのアプリを今月公開したいと思っています。

4

1 に答える 1

0

解決しました。

「UITextFieldDelegate」と「IBOutlet UITextView *textView;」を追加しました。.h ファイルに「textView.text = resultString;」を追加しました。.m ファイルに追加し、UITextView の参照アウトレットを textView に結び付けることができました。そして今、正しいテキストが UITextView に表示され、スクロールします。

于 2012-10-17T13:43:26.990 に答える