在视图控制器中设置表格视图

Posted

技术标签:

【中文标题】在视图控制器中设置表格视图【英文标题】:set table view in View controller 【发布时间】:2014-01-23 22:11:35 【问题描述】:

这是我的问题。我创建了一个视图控制器,并在其中插入了一个表格视图(带有一个单元格)。我在视图控制器的底部还有一个文本字段。目的是将我在文本字段中写的文本放入单元格中。我尝试了很多东西,但没有结果。 谁能帮帮我?

这是我的代码(我无法显示 NSLog)

My .h
@interface RBChatViewController : UIViewController<UITextFieldDelegate,UITableViewDelegate,UITableViewDataSource>


@property (strong, nonatomic) IBOutlet UITextField *entryTextField;
@property (strong, nonatomic) IBOutlet UITableView *tableview;

My .m
#import "RBChatViewController.h"

@interface RBChatViewController ()

@end

@implementation RBChatViewController


- (void)viewDidLoad

 [super viewDidLoad];
 self.entryTextField.delegate=self;
 self.tableview.delegate=self;


-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
   NSLog(@" numberofsections");
   return 1;

【问题讨论】:

您需要发布您尝试过的内容并解释您遇到的问题。 【参考方案1】:

如果没有看到你的代码,很难告诉你发生了什么,但这段代码应该可以工作。

-(void)addTextToTable 
    //method runs when you push a button to say i am done writing in text field

    NSString *textFeildText = self.textFeild.text;  //create string of textfeild text
    [self.mutableArray addObject:textFeildText];  //add string to dataSource array
    [self.table reloadData];  // update table with new data to show the new string that is created

编辑这是您需要添加的内容。

       My .h
    @interface RBChatViewController :                          UIViewController<UITextFieldDelegate,UITableViewDelegate,UITableViewDataSource>


    @property (strong, nonatomic) IBOutlet UITextField *entryTextField;
    @property (strong, nonatomic) IBOutlet UITableView *tableview;
    @property (nonatomic) NSMutableArray *mutArray;  // array of object that will be in the tableview

     My .m
    #import "RBChatViewController.h"

    @interface RBChatViewController ()

    @end

    @implementation RBChatViewController


    - (void)viewDidLoad
    
     [super viewDidLoad];
     self.entryTextField.delegate=self;
     self.tableview.delegate=self;
     self.tableview.dataDelegate = self;  // ADD THIS, this means that the data for the          tableview is gather from here  This will also display your NSLog
    _mutArray = [[NSMutableArray alloc] init];  //create your mutable array
    

    -(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
       NSLog(@" numberofsections");
       return 1;
    

    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
        //tells how many rows in your tableview based on object in array
        return _mutArray.count;

    




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

        static NSString *CellIdentifier = @"Cell";

        UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];

       NSString *string = [_mutArray objectAtIndex:indexPath.row];

        cell.textLabel.text = string;


     return cell;

    

【讨论】:

是的,我忘记了 self.tableview.datasource = self;【参考方案2】:

你应该拥有tableView 和 textField 属性, 您必须实现tableViewdelegatedatasource 方法。在cellForRowAtIndexPath 中设置cell.titleLabel.text = self.textField.text,并从textFieldDidChangeText 调用[tableView reloadata];,或者如果您有一些按钮,请在该按钮操作中添加重新加载代码。

【讨论】:

以上是关于在视图控制器中设置表格视图的主要内容,如果未能解决你的问题,请参考以下文章

在 UIScrollview 中设置 size 属性

在 UITabbarController 中设置视图控制器的委托

带有表格视图的视图仅适用于默认视图控制器

在标签栏控制器中设置视图控制器

在代码中设置自动布局约束时出现奇怪的问题

如何在 SwiftUI 中设置视图中的控制器