2016-03-21 7 views
1

UITextViewを入力して情報を入力すると、情報がUITableViewに移動します。TableViewへのTextView配列

This is just an example of what i want it to look like.[1]

私はそれがテーブルビューに新しい行が追加されるたびに更新する必要があります。

私はTextViewの情報から配列を作成し、それをTableViewに配置できると思ったが、これを行う方法を理解できないようだ。

これでも、 'UITextView'に入力したものがテーブルに移入されません。

-(void)textViewDidChange:(UITextView *)textView{ 

listArray=[[NSMutableArray alloc]initWithArray:[textView.text componentsSeparatedByCharactersInSet:[NSCharacterSet newlineCharacterSet]]]; 

[self.tableView reloadData]; 

} 


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 

static NSString *CellIdentifier = @"Cell"; 
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
if (cell == nil) { 
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; 
} 

cell.textLabel.text = [listArray objectAtIndex:indexPath.row]; 

return cell; 
} 
+0

ここにコードを記入してください。 – Khuong

+0

問題を遅くするために簡単にコードで質問を更新してください。 –

+0

私は質問している質問は私のプロジェクトの最初の段階です、上記のイメージは、私が配列とテキストビューを使って作った例です。 – vype

答えて

1

enter image description here

まず、あなたのviewControllerUITextViewdelegateプロパティを設定します。その後tableView上のデータを表示するViewController.h [ファイル] -

#import <UIKit/UIKit.h> 

    @interface ViewController : UIViewController<UITableViewDataSource,UITableViewDelegate,UITextViewDelegate> 
    @property (weak, nonatomic) IBOutlet UITableView *tableView; 
    @property (weak, nonatomic) IBOutlet UITextView *txtView; 
    @end 

ViewController.mファイル

#import "ViewController.h" 

@interface ViewController(){ 

    NSMutableArray *listArray; 
} 

@end 

@implementation ViewController 

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    self.tableView.delegate = self; 
    self.tableView.dataSource = self; 
    self.txtView.delegate = self; 
    // Do any additional setup after loading the view, typically from a nib. 
} 

- (void)didReceiveMemoryWarning { 
    [super didReceiveMemoryWarning]; 
    // Dispose of any resources that can be recreated. 
} 
-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{ 

    return 1; 
} 

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ 

    static NSString *CellIdentifier = @"Cell"; 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    if (cell == nil) { 
     cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; 
    } 


    cell.textLabel.text = [NSString stringWithFormat:@"%@",[listArray objectAtIndex:indexPath.row]];; 

    return cell; 
} 
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ 

    return listArray.count; 
} 

-(void)textViewDidChange:(UITextView *)textView{ 

    listArray=[[NSMutableArray alloc]initWithArray:[textView.text componentsSeparatedByCharactersInSet:[NSCharacterSet newlineCharacterSet]]]; 
    [self.tableView reloadData]; 

    NSLog(@"Array-- %@",listArray); 

    NSLog(@"Array Count-- %lu",(unsigned long)listArray.count); 

    NSLog(@"Text-- %@",textView.text); 

} 
@end 

使用listArray中であなたのarray--

を初期化するためにtextViewDidChangeメソッドを使用します。

+0

textviewに入力されたデータは、まだtableviewをいっぱいにしません。 – vype

+0

は、.hファイル内のUITextViewDelegateを追加する必要があります.- @interface ViewController:UIViewController

+0

は、ビュービューのビューテーブルのデリゲートとデータソースも設定します。 –

0

次の方法を使用してのTextViewのテキストを持つ配列を作成することができます。

NSString* string; 
NSArray* array = [string componentsSeparatedByString:(nonnull NSString*)] 

は今、あなたは上の配列を使用してテーブルビューを作成することができます。あなたがデリゲートを実装する場合

NSArray <NSString*> *components = [self.textView.text componentsSeparatedByString:@"\n"]; 

:あなただけの新しい行を探したい場合は、このような何かを行うことができ

[tableView reloadData]; 
0

:あなたがテーブルを更新したいときは、次のメソッドを呼び出すことができますテキストコンテンツが変更されたときに通知を受け取る場合は、テーブルビューにフィードする配列を更新することができます。UITextView

スウィフトのコードもここで考える必要があります。

let components: [String] = textView.text.componentsSeparatedByString("\n") 
+0

私は '.componentsSeparatedByCharactersInSet(NSCharacterSet。newlineCharacterSet())'を使うことを好みますが、ハードコードされた値にはアレルギーがあります。 – paulbailey

+0

十分です。それは間違いなく良いです。 –

関連する問題