0

我有一个应用程序,其中每个屏幕都将动态添加,以及屏幕上的所有元素,即表格、文本字段等。每个 viewController 将使用相同的 NIB,基本上我循环遍历 JSON 并且对于每个新屏幕,我创建一个新的 ViewController 对象并将其添加到数组中,我对要添加到屏幕的对象执行相同的操作。

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

 textField.delegate = self;

或者

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

因为它会标记一个错误。

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

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

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

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

任何信息将不胜感激。

4

2 回答 2

1

一种霰弹枪方法是从委托中剥离类型:

textField.delegate = (id) self;

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

于 2012-10-22T10:46:35.307 回答
1

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

于 2012-10-22T10:56:56.837 回答