在 TableView 中添加行

发布于 2024-09-14 06:14:16 字数 946 浏览 6 评论 0原文

所以我有两个视图,第一个有我的 TableView,第二个有我的 TextField,我想在我的 TableView 中添加一行,其中包含 TextField 中的文本。

目前我可以添加行,

[myTableView addObject:@"Test 1"];
[myTableView addObject:@"Test 2"];
[myTableView addObject:@"Test 3"];

感谢您的帮助!

- (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] autorelease];
}

NSString *cellValue = [myTableView objectAtIndex:indexPath.row];
cell.textLabel.text = cellValue;

return cell;

}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {

return [myTableView count];

}

So I have two views, the first have my TableView and the second have my TextField and I want to add a row in my TableView with the text in my TextField.

For the moment I can just add row with

[myTableView addObject:@"Test 1"];
[myTableView addObject:@"Test 2"];
[myTableView addObject:@"Test 3"];

Thanks for your help!

- (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] autorelease];
}

NSString *cellValue = [myTableView objectAtIndex:indexPath.row];
cell.textLabel.text = cellValue;

return cell;

}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {

return [myTableView count];

}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

暮倦 2024-09-21 06:14:16

我不确定你的问题到底是什么,但我认为如果你向我们展示你的表视图委托的 -tableView:numberOfRowsInSection:-tableView:cellForRowAtIndexPath: ,情况会更清楚代码>方法。这些是您将更改表视图行为的关键点,这也是您的答案可能开始的地方。


好的。这有点令人困惑——看起来 myTableView 是一个 NSArray?通常,具有类似名称的变量应该是指向表视图的指针。但 UITableView 既没有 -addObject: 方法,也没有 -count 方法。

如果是这样的话,看起来你很好(尽管我真的认为你应该重命名该数组)。您应该在 UITableView 上调用 -reload* 方法之一,让它知道数据已更改。最简单的是

[ptrToTableView reloadData];

,但只需多做一点工作,您就可以使用 -reloadSections:withRowAnimation: 获得更精美的结果。

如果这不能回答问题,那么我不确定问题是什么。 :)

I'm not sure exactly what your question is here but I think it will be much clearer if you show us your table view delegate's -tableView:numberOfRowsInSection: and -tableView:cellForRowAtIndexPath: methods. These are the key points where you'll make changes to your table view's behavior, and this is where your answer is likely to start.


Okay. This is a little confusing -- it looks like myTableView is an NSArray? Normally a variable with a name like that would be expected to be a pointer to a table view. But UITableView has neither an -addObject: method nor a -count method.

If that is the case, it looks like you're good (though I really think you should rename that array). You should call one of the -reload* methods on your UITableView to let it know that the data has changed. The simplest is

[ptrToTableView reloadData];

but with a little more work you can get fancier results with -reloadSections:withRowAnimation:.

If this doesn't answer the question, then I'm not sure what the question is. :)

笛声青案梦长安 2024-09-21 06:14:16

UITextFieldDelegate 添加到您的头文件中,它现在应该像这样:

@interface yourViewController : UIViewController <UITableViewDelegate,UITableViewDataSource,UITextFieldDelegate> {

我们简单地做的是,通过使用委托,让您的 ViewController 识别通过您的 TextField 执行的操作。为了告诉 textField 它是谁的委托,您必须在 ViewController 的 viewDidLoad 方法中编写以下内容:

- (void) viewDidLoad
{
    [super viewDidLoad];
    textField.delegate = self;
}

因此,我们必须实现该功能,如果用户完成编辑,则添加新文本:

#pragma mark -
#pragma mark  UITextFieldDelegate Methods

- (void) textFieldDidEndEditing:(UITextField *)textField
{
    [myTableView addObject:textField.text];
    [myTableView reloadData];
    textField.text = @"";
}

下面列出了委托的更多方法:
http://developer.apple.com/库/ios/#documentation/uikit/reference/UITextFieldDelegate_Protocol/UITextFieldDelegate/UITextFieldDelegate.html

add to your header file the UITextFieldDelegate it should like now like:

@interface yourViewController : UIViewController <UITableViewDelegate,UITableViewDataSource,UITextFieldDelegate> {

What we simply do is, that we make your ViewController recognizing actions that are performed with your TextField, by using the delegate. In order to tell the textField, whose delegate it is, you have to write for example in the viewDidLoad-method of your ViewController:

- (void) viewDidLoad
{
    [super viewDidLoad];
    textField.delegate = self;
}

So we have to implement the function, that if the user is done with editing, the new text is added:

#pragma mark -
#pragma mark  UITextFieldDelegate Methods

- (void) textFieldDidEndEditing:(UITextField *)textField
{
    [myTableView addObject:textField.text];
    [myTableView reloadData];
    textField.text = @"";
}

Further methods of the delegate are listed below:
http://developer.apple.com/library/ios/#documentation/uikit/reference/UITextFieldDelegate_Protocol/UITextFieldDelegate/UITextFieldDelegate.html

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文