我试图让它发挥作用,但我肯定在某处犯了错误。这是根据C头的Delegate类(剪下):
@protocol PaymentEngineMiddlewareDelegate <NSObject>
@required
/*!
@brief Delegate method for startTransaction.
@param transResponse - Contains all the transaction response info from the gateway
*/
-(void)transactionComplete :(PaymentEngineTransactionResponse *)transResponse;
@optional
/*!
@brief Delegate method for device connected. The method gets called when the device is connected
*/
-(void)deviceConnected;
/*!
@brief Delegate method for device disconnected. The method gets called when the device is disconnected
*/
-(void)deviceDisconnected;
@end
为此,我有:
// @interface PaymentEngineMiddlewareDelegate : NSObject
[BaseType(typeof(NSObject))]
[Model]
[Protocol]
interface PaymentEngineMiddlewareDelegate
{
[Abstract]
[Export("transactionComplete:")]
void TransactionComplete(PaymentEngineTransactionResponse transResponse);
[Export("deviceConnected")]
void DeviceConnected();
[Export("deviceDisconnected")]
void DeviceDisconnected();
}
然后对于PaymentEngineMiddleware类,标题包含:
@interface PaymentEngineMiddleware : NSObject
+ (PaymentEngineMiddleware *) getInstance;
@property(nonatomic, strong) id<PaymentEngineMiddlewareDelegate> delegate;
//------------------------------Device Methods------------------------------
/*!
@brief This method must be called before starting any transaction. Use it to connect to a device.
@param deviceName The name of the device such as icmp or castle
@param setDelegate Sets to self
*/
-(void)setDevice :(NSString *)deviceName :(id)setDelegate;
@end
为此,我有:
// @interface PaymentEngineMiddleware : NSObject
[BaseType(typeof(NSObject))]
[Protocol]
interface PaymentEngineMiddleware
{
// +(id)getInstance;
[Static]
[Export("getInstance")]
PaymentEngineMiddleware GetInstance { get; }
[Export("delegate", ArgumentSemantic.Retain)]
PaymentEngineMiddlewareDelegate Delegate { get; set; }
[Export("setDevice:setDelegate:")]
void SetDevice(string deviceName, PaymentEngineMiddlewareDelegate setDelegate);
}
在代码中,当我尝试调用&#34; middleware.SetDevice(&#39; name&#39;,this);&#34;这是一个继承自委托的类,我得到了异常。
有什么明显的错过我错过了吗?
答案 0 :(得分:1)
<telerik:RadWatermarkTextBox x:Name="txtSoldToName"
Padding="10,0,0,0"
Text="{Binding soldToName, UpdateSourceTrigger=PropertyChanged}"
MaxLength="60">
<telerik:RadWatermarkTextBox.WatermarkContent>
<TextBlock Text="Limit to 60 characters or less" FontSize="12" Foreground="#969696" />
</telerik:RadWatermarkTextBox.WatermarkContent>
</telerik:RadWatermarkTextBox>
方法的选择器错误。
setDevice
方法的正确选择器为-(void)setDevice :(NSString *)deviceName :(id)setDelegate
。这是因为此方法中的第二个参数没有外部名称。
绑定的最终条目应如下所示
setDevice::
您可以阅读更多有关如何在Apple docs中构建Objective-C中方法签名的信息。
答案 1 :(得分:0)
还请在情节提要文件中查找未在代码中实现的属性中的组件操作。
就我而言,我已为情节提要文件中的按钮提供了触摸内幕操作,但未在代码中实现。实施此问题后就不再存在。