- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试通过实现 iOS 11 中可用的两个 UITableView 委托(delegate)方法,在 Delphi 中为 UITableView 添加交换操作:
leadingSwipeActionsConfigurationForRowAtIndexPathtrailingSwipeActionsConfigurationForRowAtIndexPath
objective-c :
- (nullable UISwipeActionsConfiguration *)tableView:(UITableView *)tableView leadingSwipeActionsConfigurationForRowAtIndexPath:(NSIndexPath *)indexPath API_AVAILABLE(ios(11.0)) API_UNAVAILABLE(tvos);
- (nullable UISwipeActionsConfiguration *)tableView:(UITableView *)tableView trailingSwipeActionsConfigurationForRowAtIndexPath:(NSIndexPath *)indexPath API_AVAILABLE(ios(11.0)) API_UNAVAILABLE(tvos);
Action 派生自新类 UIContextualAction。我的问题恰恰出在这门课的翻译上。这是 ObjectiveC 类定义:
@class UIContextualAction;
// call the completionHandler to reset the context to its normal state (e.g. when swiping, resets to unswiped state)
// pass YES to the completionHandler if the action was actually performed, to show a visual indication of the successful completion
typedef void (^UIContextualActionHandler)(UIContextualAction *action, __kindof UIView *sourceView, void(^completionHandler)(BOOL actionPerformed));
typedef NS_ENUM(NSInteger, UIContextualActionStyle) {
UIContextualActionStyleNormal,
UIContextualActionStyleDestructive
} NS_SWIFT_NAME(UIContextualAction.Style) API_AVAILABLE(ios(11.0)) API_UNAVAILABLE(tvos);
UIKIT_EXTERN API_AVAILABLE(ios(11.0)) API_UNAVAILABLE(tvos)
@interface UIContextualAction : NSObject
+ (instancetype)contextualActionWithStyle:(UIContextualActionStyle)style title:(nullable NSString *)title handler:(UIContextualActionHandler)handler;
@property (nonatomic, readonly) UIContextualActionStyle style;
@property (nonatomic, copy, readonly) UIContextualActionHandler handler;
@property (nonatomic, copy, nullable) NSString *title;
@property (nonatomic, copy, nullable) UIColor *backgroundColor; // a default background color is set from the action style
@property (nonatomic, copy, nullable) UIImage *image;
@end
因此,我的 Delphi 导入看起来像这样:
const
UIContextualActionStyleNormal = 0;
UIContextualActionStyleDestructive = 1;
type
UIContextualActionStyle = integer;
UIContextualActionClass = interface(NSObjectClass)
['{F341A178-2950-4D0A-9EF2-DCDEAB76FF81}']
function contextualActionWithStyle(style: UIContextualActionStyle; title: NSString; handler: Pointer{UIContextualActionHandler}): Pointer; cdecl;
end;
UIContextualAction = interface(NSObject)
['{C5B4CB53-0655-41FA-B48E-D4FB0E9A54FB}']
function title: NSString; cdecl;
function backgroundColor: UIColor; cdecl;
function image: UIImage; cdecl;
function style: UIContextualActionStyle;
function handler: Pointer{UIContextualActionHandler};
procedure setTitle(title: NSString); cdecl;
procedure setBackgroundColor(backgroundColor: UIColor); cdecl;
procedure setImage(image: UIImage); cdecl;
procedure setStyle(style: UIContextualActionStyle); cdecl;
procedure setHandler(handler: Pointer{UIContextualActionHandler}); cdecl;
end;
TUIContextualAction = class(TOCGenericImport<UIContextualActionClass, UIContextualAction>);
我什至没有来实现 UIContextualActionHandler 并暂时用 nil 创建我的 Action 作为 UIContextualActionHandler。如果我想创建一个“空”操作,应用程序会崩溃:
var
btnDelete: UIContextualAction;
begin
//Crash by this code line:
btnDelete := TUIContextualAction.Wrap(TUIContextualAction.OCClass.contextualActionWithStyle(UIContextualActionStyleNormal, StrToNSStr('Delete'), nil));
我做错了什么?谢谢!
最佳答案
解决方法:
@property (nonatomic, readonly) UIContextualActionStyle style;
@property (nonatomic, copy, readonly) UIContextualActionHandler handler;
是只读的,不必声明。正确定义:
UIContextualActionClass = interface(NSObjectClass)
['{F341A178-2950-4D0A-9EF2-DCDEAB76FF81}']
function contextualActionWithStyle(style: UIContextualActionStyle; title: NSString; handler: Pointer{UIContextualActionHandler}): Pointer; cdecl;
end;
UIContextualAction = interface(NSObject)
['{C5B4CB53-0655-41FA-B48E-D4FB0E9A54FB}']
function title: NSString; cdecl;
function backgroundColor: UIColor; cdecl;
function image: UIImage; cdecl;
procedure setTitle(title: NSString); cdecl;
procedure setBackgroundColor(backgroundColor: UIColor); cdecl;
procedure setImage(image: UIImage); cdecl;
end;
关于ios - 德尔福 + iOS : Error by "translating" of "UIContextualAction" interface from ObjectiveC to Delphi,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47984525/
我正在为ObjectiveC-lua桥使用两个库。 一种是Lua官方网页提供的Lua库(带有C API)。由于那个图书馆 没有提供将objectiveC对象传递给lua的API,我选择了另一个库 为此
我制作了一个应用程序,其中有一些扩展名为 .mm 的 Objective C++ 文件和一些扩展名为 的 Objective C 文件.m. 我的应用程序运行良好,直到我需要添加 Philips HU
这个问题在这里已经有了答案: 关闭 10 年前。
这是我的第一个问题:) 我真的需要一些服务器和 PHP 方面的帮助。这是问题: 我有一个 NSMutableURLRequest 与这样的 php 文件交互: NSInteger userID
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭 4 年前。 Improve
我是 ObjectiveC 语言的新手。我无法理解内存管理语法。我的代码如下: NSDate* someDate; someDate=[[NSDate alloc] init]; loop {
一些 Apple 的 obj-c API 仍然使用 C 函数,例如: -(NSArray * ) sortedArrayUsingFunction: (NSInteger (*)(id, id, vo
我正在尝试在运行时对 Objective C 字符串进行字符串化。 是否可以使用字符串化运算符来执行此操作?我意识到它是一个预处理宏,但我可以将它与返回 char* 的函数结合起来吗? 这就是我想做的
浏览关于 Objective C 的优秀 Apress 书籍。为了帮助理解,我尝试用 Java/Action-script 重新编码任何 Ojective C 代码示例。ObjC 中方法调用的一种常见
我只想知道如何通过引用将数组从 Swift 类传递到 Objective C 类。我通过使用 inout 关键字的引用将 Swift 转换为 Swift。但是由于 ObjC 使用指针本身作为对象名称。
我想在我的项目中使用 JSQMessagesViewController(使用 swift),我没有使用 pod,因为我会修改一些 ObjectiveC 代码,所以我只是将项目拉到我自己的 iOS 项
当我在 objective-c 中编码时,我想知道我是否可以将一些 Qt 代码放入我的 objective-c 项目中并将它们一起编译?我做了一项研究,但答案有点可疑。如果这是可能的,请问您是否有关于
这个问题在这里已经有了答案: How does an underscore in front of a variable in a cocoa objective-c class work? (9
import ObjectiveC 和 import Foundation 在 Swift 中有什么区别? 最佳答案 Foundation 比 ObjectiveC 更具包容性。但是,我不确定 Fou
我是 iOS 开发新手,我有以下问题:在我的代码中,我有一个带有 UIText 字段的 UIViewController,当用户在 View 中键入时,该字段将保存密码。该密码用于在服务器前面进行身份
GData API今天显示的行为与昨天不同。 我在iOS应用中获取了几个播放列表,如下所示: [[self youTubeService] fetchFeedWithURL:[[playlistLin
在常规代码中,如果我编写如下内容: [self performAnActionWithArg:myArg andThisArg:myArg2]; 然后我可以通过 CMD 单击“performAnAct
所以我的问题是:如何从外部 ObjectiveC 类引用 UIViewController。我有一个 ViewController,上面有一个 UIScrollView,以及一个需要重写一些方法并最终
我正在实现一个简单的应用程序,它将从 Google map 下载数据,并在 map 上显示这些数据。我实现了所有代码以从 Google 获取此信息,现在我正在尝试实现解码多段线的方法。我用 Objec
我的 DynamoDB 查询返回“不支持查询键条件”。 NSMutableDictionary * conditions = [[NSMutableDictionary alloc] init]; D
我是一名优秀的程序员,十分优秀!