我在第一个接口控制器中有一个表,当按下一行,模态接口控制器打开时,它包含一个按钮。
我希望按钮删除第一个接口控制器中的行。
这是我的代码:
在第一个接口控制器
中块引用
// It opens up a modal view ( with the context of the tapped row )
override func contextForSegueWithIdentifier(segueIdentifier: String, inTable table: WKInterfaceTable, rowIndex: Int) -> AnyObject? {
var timelineRow = timeline.reverse()
return timelineRow[rowIndex]
}
块引用
这是我在第二个接口控制器中的代码
块引用
override func awakeWithContext(context: AnyObject?) {
super.awakeWithContext(context)
sentContext = (context as? Dictionary)!
sentRow = sentContext
//sentRow contains the context
}
@IBAction func deleteRow() {
var sentRow : [String:String] = ["action":"delete"]
NSNotificationCenter.defaultCenter().postNotificationName("notification_DeleteRow", object: nil, userInfo: sentRow)
dismissController()
}
块引用
我通过contextForSegueWithIdentifier发送了行的索引。
在第二个接口控制器中,我已经提取了Context并将其置于变量中
然后我通过NSNotificationCenter发回userInfo
我的问题:
如何使用从模态控制器发回的userInfo来删除抽头行。
如何通过按下位于(第二个IC)的删除按钮
答案 0 :(得分:2)
在这种情况下有几种选择:
NSUserDefaults
,虽然它可以使用,但这并不是指如何使用该类。NSNotification
并从模态控制器广播它。您的第一个接口控制器将侦听此事件并删除相应的记录。awakeWithContext:
中检索它。这允许您将第一个接口控制器设置为委托。一旦发生这种情况,您可以定义您想要通知第一个控制器重要事件的协议。我有一篇博文,详细介绍了后两个主题:Advanced WatchKit Interface Controller Techniques
答案 1 :(得分:1)
这可以通过自定义委托轻松实现,
@protocol MyCustomDelegate <NSObject>
- (void)deleteButtonTapped:(id)sender;
@end
- (IBAction)deleteButtonTapped:(id)sender {
if ([self.delegate respondsToSelector:@selector(deleteButtonTapped:)]) {
[self.delegate deleteButtonTapped:sender];
};
}
更详细的答案是here。