TextView数组到TableView

时间:2016-03-21 09:45:40

标签: ios objective-c uitableview

我需要使用UITextView输入信息,然后将信息移动到UITableView

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

每次添加新行时,我都需要它来更新tableview。

我以为我可以用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;
}

3 个答案:

答案 0 :(得分:1)

enter image description here

首先将delegate的{​​{1}}属性设置为UITextView。然后使用viewController方法初始化数组 -

textViewDidChange file-

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上显示您的数据。

答案 1 :(得分:0)

您可以使用以下方法创建一个包含textview文本的数组:

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

现在您可以使用上面的数组创建您的tableview。无论何时想要更新表,都可以调用以下方法:

[tableView reloadData];

答案 2 :(得分:0)

如果您只是想寻找新的线条,您可以这样做:

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

如果您专门实现UITextView的委托方法,以便在文本内容发生变化时收到通知,则可以更新提供给表格视图的数组。

这也是Swift中的代码,因为我们现在应该考虑它。

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