我目前正处于需要更新UITableviewCell的问题。
当用户按下uitableviewcell - THERES ONLY 1 !!时,用户被推送到UITABLEVIEWCONTROLLER,用户可以在其中选择具有自己标题的多个单元格中的一个。
我需要获取单击的tableviewcells标题并将值传递回parentviewcontroller,并将1 tableviewcell的名称更新为用户在推送的uitableivewcontroller中单击的名称。
这是父视图控制器的图片......
继承人推着的viewcontroller图片......
我昨天早些时候被告知需要代表团,但我不确定此时该做什么:/。
这是我在父视图控制器中使用的一些代码......
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
[tableView deselectRowAtIndexPath:indexPath animated:YES];
ProblemTypes *view = [[ProblemTypes alloc] init];
[self.navigationController pushViewController:view animated:YES];
}
我也没有使用故事板,只有几个xib。
此外,当选择一个单元格时,pushviewcontroller的代码会弹出到父视图控件...
#pragma mark - Table view delegate
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
NSLog(@"Cell's text: %@",cell.textLabel.text);
[self.navigationController popViewControllerAnimated:YES];
}
谢谢你们!
答案 0 :(得分:1)
发现它......代表团是解决方案......只希望它是最有效率的!这是代表团的代码。
首先,实现parentViewcontroller的委托及其方法,同时确保将委托添加到parentviewcontroller ......
@protocol SendFeedBackDelegate
- (void) didReceiveType:(NSString *) message;
@end
@interface SendFeedBackViewController : UIViewController <SKPSMTPMessageDelegate, UITableViewDataSource,UITableViewDelegate, SendFeedBackDelegate>
{
NSString *subject;
}
接下来,在
下实施方法:- (void) didReceiveType:(NSString *) message;
@implementation SendFeedBackViewController
- (void) didReceiveType:(NSString *) message
{
subject = message;
[feedbackTableView reloadData];
// I reload the data because it is needed when this function is going to be called
// in the child viewcontroller.... just keep reading :)
}
现在转到- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
以使用此示例和我的项目:)
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [feedbackTableView dequeueReusableCellWithIdentifier:CellIdentifier];
// Configure the cell...
if (cell == nil)
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
// THIS IS THE IMPORTANT PIECE OF CODE YOU NEED TO NOTICE.....
// it allows for the first thing the tableview cell to be is a static string until subject
// it is changed and the user chooses a subject in the childviewcontroller
if (subject == nil) {
cell.textLabel.text = @"Select a Product";
} else {
cell.textLabel.text = subject;
}
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
return cell;
}
现在,将一个协议添加到childviewcontroller以允许childviewcontroller符合parentviewcontroller
在childviewcontroller.h中:添加以下代码行,
#import "ParentViewController.h"
@protocol SendFeedBackDelegate;
@interface FeedbackTypes : UITableViewController
{
id<SendFeedBackDelegate> delegate;
}
@property (nonatomic, assign) id<SendFeedBackDelegate> delegate;
现在您已在父视图控制器中设置了委托....接下来查看相同的文件实现文件(.m)并添加以下内容:
//Add synthesize just under @implementation "ClassName"
@synthesize delegate;
// I used a uitableviewcontroller for this example so refer to the problem I have above
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
//NSLog(@"Cell's text: %@",cell.textLabel.text);
[delegate didReceiveType:cell.textLabel.text];
[self.navigationController popViewControllerAnimated:YES];
}
这就是!!!! ..... :),希望这是一个简单而基本的教程,这是一个快照。