当用户在 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 选项卡时如何刷新表数据