2013-02-08 188 views
1

所以我有一个弹出表格视图,显示3个名称。我试图得到的是,当用户从弹出表中选择一个名称时,它将关闭弹出窗口,并在原始视图控制器的标签或文本框上显示该名称。以下是我迄今为止:从xcode中的单元格内的文本字段获取值

(selectedName是标签我对原来的ViewController的名字)它不工作

- (void) tableView: (UITableView *) tableView didSelectRowAtIndexPath: (NSIndexPath *) indexPath 
{ 
    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath]; 
    selectedName.text = cell.textLabel.text; 



} 

,我也在寻找一种方式,在弹出消失当单元格被点击时。有任何想法吗?

编辑:(设置单元格标签文本代码)

cell.textLabel.text = [[myArray objectAtIndex:indexPath.row] objectForKey:@"Name"]; 
+1

为什么明摆着的吗?你看起来很明智。当你创建它时,你有没有为cell.textLabel设置一个值?它在我看来像你缺少的是实际显示的名称。您似乎正确地将其设置为iVar。另外,请显示您用来显示弹出窗口的代码。没有人知道你是如何做到这一点的;因此,没有人可能知道你如何解雇它。 – Jeremy 2013-02-08 18:45:48

+0

如何显示此弹出窗口?这是一种模态观点吗?这是一个popover视图吗?它是一些奇怪的自定义警报视图? – 2013-02-08 18:48:06

+0

是的它设置为从数组中读取值。它在表格单元格上正确显示。我只是表示它不工作,这就是为什么我在这里。这就是让我困惑的原因,因为它应该起作用。 – bardockyo 2013-02-08 18:48:45

回答

1

你可以做的是定义你的tableview能传达到演示者的协议。这是一种常见的做法。

这里是一个最原始的例子:

@protocol MyTableViewDelegate<NSObject> 
-(void)myTableView:(TheTableViewClass *)tableView didSelectValue:(NSString *)value; 
@end 

@interface TheTableViewClass : UITableViewController 
@property (nonatomic, assign) id<MyTableViewDelegate> d; 
@end 


@implementation TheTableViewClass 
@synthesize d; 
- (void) tableView: (UITableView *) tableView didSelectRowAtIndexPath: (NSIndexPath *) indexPath 
{ 
    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath]; 
    [self.d myTableView:self didSelectValue:cell.textLabel.text]; 
} 
@end 


@implementation MyPresenter 
-(void)present 
{ 
    self.myTableViewClass = [MyTableViewClass ....]; 
    self.myTableViewClass.d = self; 
    //present myTableViewClass... 
} 
-(void)myTableView:(TheTableViewClass *)tableView didSelectValue:(NSString *)value 
{ 
    //Set some label to the value passed in 
    //Dismiss self.myTablViewClass 
} 
@end 

一些额外阅读:Working with Protocols

相关问题