我有一个显示在UITableViewController
上的模式,它应该在UITextField占位符文本中显示不同的文本,具体取决于UITableViewController
调用它。
一个UITableViewController显示句子,其他故事。如果模型被推到显示句子的TableViewController
上,占位符应该说“你的新句子”;如果在显示故事的TableViewController上推送模态,它应该说“你的故事的标题”。
我可以在ViewDidLoad
上使用:
NSLog(@"delegate: %@", self.delegate);
但我不确定如何使用if语句检查。 它也感觉错误或不优雅 - 就像它破坏了某处的设计原则。
检查哪个委托推送模态视图控制器的优雅解决方案是什么?
答案 0 :(得分:2)
您的模态控制器不应该知道有关委托的任何信息,除非它实现了您设置的任何委托协议。所以你有两个选择:
prepareForSegue:
中或在创建时或类似时)选项1可能更好。
答案 1 :(得分:1)
最干净的方法可能是在自定义视图控制器上放置一个属性,然后在呈现它之前设置它:
MyModalViewController *viewController = [[MyModalViewController alloc] init];
viewController.placeholder = @"Your New Sentence";
[self presentModalViewController:viewController animated:YES];
然后,在视图控制器的viewDidLoad中,您可以使用属性值来设置文本字段。
模态视图控制器并不需要知道“谁”推它;它只需要一些“谁”应该在设置时提供的信息。
答案 2 :(得分:0)
我建议为模态中的每个BOOL
保留一个controller
变量...
所以喜欢这个
BOOL view1;
BOOL view2;
BOOL view3; .. etc
然后呈现模态设置一个BOOL
到TRUE
..取决于控制器...然后在你的模态viewDidLoad
..做一个switch语句来检查哪个值为TRUE ..并设置文本