我有tableview cell
。其中有button
和label
。当用户点击按钮时,我想弹出一个消息框,用户可以在其中键入一些文本并提交。在该实例中(当用户键入文本并提交时),用户键入的文本应显示在该单元格的UILabel
(在该特定cell
)中。我怎么能这样做?
cell.cellButton.tag = indexPath.row;
[cell.cellButton addTarget:self action:@selector(cellButtonClicked:) forControlEvents:UIControlEventTouchUpInside];
-(void)cellButtonClicked: (id)sender {
UIAlertView * alert = [[UIAlertView alloc] initWithTitle:@"alert" message:@"Enter your text" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"Ok"];
alert.alertViewStyle = UIAlertViewStylePlainTextInput;
[alert show];
}
问题:
1.。)如何使用文本填充Cell中的标签? (请考虑我已经有了我的文字)
答案 0 :(得分:1)
将按钮操作中的警报视图标记设置为
-(void)cellButtonClicked: (id)sender {
UIAlertView * alert = [[UIAlertView alloc] initWithTitle:@"alert" message:@"Enter your text" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"Ok", nil];
alert.alertViewStyle = UIAlertViewStylePlainTextInput;
alert.tag = sender.tag;
[alert show];
}
之后在警报视图委托中写下以下代码
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{
if (buttonIndex == 1) {
NSString *name = [alertView textFieldAtIndex:0].text;
// Insert whatever needs to be done with "name"
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:alertView.tag inSection:0];
UITableViewCell *cell = [_myTableview cellForRowAtIndexPath:indexPath];
for (UIView *view in cell.contentView.subviews) {
if([view isKindOfClass:[UILabel class]]){
UILabel *label = (UILabel*) view;
label.text = name;
}
}
}
}
希望它会对你有所帮助。
答案 1 :(得分:0)
您尝试此代码
-(void)cellButtonClicked: (id)sender {
UIAlertView * alert = [[UIAlertView alloc] initWithTitle:@"alert" message:@"Enter your text" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"Ok"];
alert.alertViewStyle = UIAlertViewStylePlainTextInput;
alert.tag = sender.tag;
[alert show];
}
警报视图Ok按钮单击代码
您获得TextField
文字,并使用indexPath
-(void)alertView:(UIAlertView *)alertView1 clickedButtonAtIndex:(NSInteger)buttonIndex
{
if (buttonIndex==alertView1.firstOtherButtonIndex) {
NSIndexPath *theIndexPath=[NSIndexPath indexPathForRow:alertView1.tag inSection:0];
UITableViewCell *cell = [self.yourTableViewName cellForRowAtIndexPath:theIndexPath];
cell.yourLabel.text = [alertView1 textFieldAtIndex:0];
[self.tableView reloadRowsAtIndexPaths:theIndexPath withRowAnimation:UITableViewRowAnimationNone];
}
}
答案 2 :(得分:0)
实现表视图的最佳做法是拥有适当的数据源。
因此,如果您的所有单元格都从一个公共位置拾取文本,让我们说一个可变数组,那么您可以更新该数组中该特定indexpath.row上的文本并重新加载该表。