2011-09-01 41 views
0

直到昨天晚上更新Xcode,这个工作很好(尽管可能通过纯粹的运气!)。通过Xcode的iOS开发:UIView和UITextView/UIPickerView - 不能分配委托?

我指定的委托时,现在得到一个错误我UITextViews,菲尔兹和UIPickerViews:

[m_textField setDelegate:GAMESTATE->glView.self]; 

m_textField被定义为的UITextField *。 glView被定义为UIView *。为了简单起见,我只为整个应用程序使用了一个UIView(也可能是一个问题)。我只需要在应用程序中访问几个基本操作即可从用户获取简单的文本信息。现在,我得到的错误:

Cannot initialize a parameter of type 'id<UITextFieldDelegate>' with an rvalue of type 'UIView*' 

就像我说的,我可能是做错事摆在首位,并且只通过纯粹的,好运气的工作!如果有帮助,我已经继承我UIView,加速度计委托,因为这样:

@interface GLView : UIView <UIAccelerometerDelegate> 

任何帮助,建议或提示将不胜感激。今天早上我偶然发现了一些书籍,并且匆匆阅读了几篇苹果文档,但快速解决方法似乎不可行。我不会重构从用户那里获得输入的方式,我可以用一只手到达那里。

+0

我不确定它们发生了什么。什么是GAMESTATE?你为什么要打电话给glView。如果您发布更多代码或应用程序结构大纲,我认为我们可以提供更多帮助。你想使用的代表是什么对象? –

+0

GAMESTATE是我使用的一个全球单身人士 - 我不得不承认,通过委派的方式非常糟糕。在我看来,Nekto的建议对我来说更有意义。我一直在围绕像这样的iOS特定操作进行适当的实施,但我真的需要从这个角度正确地做到这一点。让我看看这样做是否会诀窍... – David

回答

2

你应该创建,例如,NSObject将委托

    UITextView
  1. UITextViewDelegate
  2. UIPickerViewUIPickerViewDelegate

类声明应该是这样的:

@interface MyViewDelegator:NSObject<UITextViewDelegate, UIPickerViewDelegate> 

那么你应该ALLOC +初始化它,并把它设置为你的文字/选择器的观点委托:

MyViewDelegator *delegator = [[MyViewDelegator alloc] init]; 
[m_textField setDelegate:delegator]; 

不要忘记在MyViewDelegator中实施对协议不可选的适当方法。

+0

Nekto,是否有一个这样的NSObject是相应的视图委托(Picker/Text在这种情况下)的输入字段的子类?换句话说,如果我在屏幕上有4个UITextView对象,我应该每个都有这些MyViewDelegators中的一个,还是所有四个都应该绑定到一个ViewDelegator?如果在一个屏幕上有4个UITextViews,那么在游戏后面的屏幕上会有另外8个 - 同样的处理或不同? – David

+0

请记住,这不是一个应用程序 - 它是一个完全OpenGLES 3D游戏,具有极少量的UIKit输入。我不知道这是否会改变最佳做法或不... – David

+0

更新:我已经实现它(我认为)正确...但我仍然得到完全相同的错误。我有一个新的类,MyViewDelegator就像你所建议的,我实例化它,然后尝试将它分配给setDelegate,并没有喜悦 - 同样的错误。 – David