当用户在 Table View 行上的选项卡时需要将数据传递给 Watchkit 中的另一个详细界面控制器

Posted

技术标签:

【中文标题】当用户在 Table View 行上的选项卡时需要将数据传递给 Watchkit 中的另一个详细界面控制器【英文标题】:Need to Pass data when user tabs on Table View row to another DetailedInterfaceController in Watchkit 【发布时间】:2015-02-07 21:25:27 【问题描述】:

您好,我是 ios Watchkit 开发的新手。

当用户在表格行上使用标签时,我需要传递数据。我已经尝试过使用segue 和使用pushControllerWithName 两种方式,甚至在方法中尝试过presentControllerWithName

-(void)table:(WKInterfaceTable *)table didSelectRowAtIndex:(NSInteger)rowIndex

     [self contextForSegueWithIdentifier:@"navigare" inTable:self.tbl rowIndex:rowIndex];
     //And Tried following
     [self pushControllerWithName:(NSString *)@"ProfileInterfaceController" context: rowValue];


这里有什么帮助吗?

【问题讨论】:

这段代码给你什么结果?你如何设置 rowValue 的值?您是否在 IB 中使用 segue? contextForSegueWithIdentifier:@"navigare" 是错字吗?检查您在 Interface Builder 中的标识符是否与您的代码匹配。 @rdelmar 这是像UITABLEVIEWDELEGATE 方法一样的内置方法。它告诉选择了哪一行,我只需要这个我无法将数据传递给ProfileInterfaceController @phillfarrugia 没有朋友,我有相同的名字navigare 来分隔标识符。这不是错别字 【参考方案1】:

您是否在从 ProfileInterfaceController 访问“rowValue”时遇到问题?或者您只是不确定如何完成这项工作?

WatchKit 允许您使用 presentControllerWithName:Context: 方法将数据发送到带有 segue 的 WKInterfaceController。

Name - 是在 Interface Builder 中分配给目标 WKInterfaceController 的名称(不是文件名或任何其他名称)。 Context - 是一个用于发送数据的 NSDictionary 参数。

当目标 WKInterfaceController 被初始化时,awakeWithContext: 方法被调用,你的上下文字典就可以使用了。

在您提供的代码 sn-p 中,很难理解“rowValue”。这需要在发送之前封装在一个 NSDictionary 对象中。

查看Apple's Framework Reference for more information

不相关,但值得注意 - 在 Objective C 中使用 NSString 文字语法 (@"This is a string") 时,无需添加 (NSString *)。

【讨论】:

我使用了以下代码-(void)table:(WKInterfaceTable *)table didSelectRowAtIndex:(NSInteger)rowIndex NSDictionary *d=[NSDictionary dictionaryWithObject:@"hi" forKey:@"nm"]; [self presentControllerWithName:@"ProfileInterfaceController" context:d]; 没有任何反应。它没有被重定向到 ProfileInterface 控制器 我忘记添加 ProfileInterfaceController 作为标识符。现在解决了谢谢:)【参考方案2】:
 override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) 

    if(segue.identifier == "updatepurposesegue")
        var vrc = segue.destinationViewController as NewPurposeViewController;

        vrc.temp = row

    

【讨论】:

你的代码看起来不完整,一些解释可以帮助理解代码 你写的代码很快,而问题是指目标c

以上是关于当用户在 Table View 行上的选项卡时需要将数据传递给 Watchkit 中的另一个详细界面控制器的主要内容,如果未能解决你的问题,请参考以下文章

当用户返回到 UITabBarController 选项卡时如何刷新表数据

当用户切换选项卡时,如何允许 Easeljs Tickers 保持活动状态

标签视图导航上的 SwiftUI 调用功能

mapView 上的点在移动到下一个选项卡时消失

单击 QDockWidget 的选项卡时的通知?

Android:为什么在创建选项卡时会调用onTabSelected?