从表视图传递数据

时间:2014-07-15 11:24:15

标签: ios objective-c uitableview segue

在我的iOS应用中,用户可以在表格视图中选择主机名。应将此主机名转移到详细视图控制器。

TableViewController

    - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
 {
     NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
     UITableView *cell = [self.tableView cellForRowAtIndexPath:indexPath];
     NSLog(@"%@", self.cell.textLabel.text);
     DPPingViewController *objectOfPingViewController = segue.destinationViewController;
     objectOfPingViewController.string = (NSString *)sender;
 }

DetailViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    self.ipAddr.text = _string;
    //self.ipAddr.text = @"192.168.178.1";
    self.results.text = @"";
    NSLog(@"Zelle: %@", _string);

}

的NSLog

2014-07-15 11:52:37.646 EasyTest[3623:90946] Zelle: <UITableViewCell: 0xc17fe30; frame = (0 0; 320 44); text = 'Apple.com'; autoresize = W; layer = <CALayer: 0xc1800c0>>

为什么NSLog只显示&#34; Apple.com&#34;。其他信息来自哪里?

1 个答案:

答案 0 :(得分:0)

看起来segue的sender实际上是UITableViewCell,而不是你想要的字符串内容,这对你在故事板中如何配置它有意义。您可能希望执行以下操作,而不是将发件人强制转换为NSString:

UITableViewCell *sourceCell = (UITableViewCell *)sender;
objectOfPingViewController.string = sourceCell.textLabel.text;

这应该可以获得实际的字符串内容,而不是整个表格单元格,这是一个带有一堆其他参数的视图类。