Objective-c使用必要的委托方法添加动态元素

时间:2012-10-22 10:43:18

标签: objective-c ios cocoa-touch

我有一个应用程序,其中每个屏幕都将动态添加,以及屏幕上的所有元素,即表格,文本字段等。每个viewController将使用相同的NIB,基本上我循环通过JSON和每个新的屏幕,我创建一个新的ViewController对象并将其添加到一个数组,我对要添加到屏幕的对象做同样的事情。

事实是,一个屏幕可能需要一个tableView委托方法,另一个可能需要文本字段委托方法。如果我没有在接口文件中实现委托,那么我就不能这样做

 textField.delegate = self;

tableView.delegate = self;
tableView.dataSource = self;

因为它会标记错误。

这是不好的做法,只是添加我可能拥有的所有委托方法,即

@interface Testing : UIViewController<UITableViewDataSource, UITableViewDelegate, UITextFieldDelegate, UIPickerViewDataSource, UIPickerViewDelegate, UITextViewDelegate, UIWebViewDelegate>

然后实现所有方法,只有在需要时才会调用它们。或者这是个坏主意?

或者有更好的方法来设置它吗?

非常感谢任何信息。

2 个答案:

答案 0 :(得分:1)

一种霰弹枪方法是剥离代表的类型:

textField.delegate = (id) self;

如果委托以某种方式保证响应协议所要求的消息,那么一切都会正常工作。这是一个丑陋的黑客还是一个优雅的解决方案取决于你的问题的细节。

答案 1 :(得分:1)

是的,您可以实现所需的委托方法,并在需要时调用它们。它始终是首选方法。