我是iOS和Objective-C的新手,我在理解控制器如何工作方面遇到了一些麻烦.
在我的代码中,我有一个UIViewController(我的自定义控制器由storyboard分配),在其中,与其他对象一起,我希望有一个由不同控制器处理的表.这样做的正确方法是什么?
我刚刚将Facebook iOS SDK升级到v.4.0.1,我收到了以下错误:
Undefined symbols for architecture x86_64:
"_OBJC_CLASS_$_FBSDKLoginManager", referenced from:
objc-class-ref in Controller1.o
objc-class-ref in AppDelegate.o
objc-class-ref in Controller2.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Run Code Online (Sandbox Code Playgroud)
我已经尝试更改链接器:使用-all_load我得到相同的错误,而使用-force_load则变为"ld:找不到文件:-fobjc-arc".有解决方案吗
我正在使用 CAShapeLayer 绘制一个半圆,我希望在开头有一个 kCGLineCapRound ,在结尾有一个 kCGLineCapButt 。我怎样才能做到这一点?
UIBezierPath *circlePathMax = [UIBezierPath bezierPathWithArcCenter:CGPointMake(self.view.center.x, self.view.center.y) radius:radius startAngle:angle1 endAngle:angle2 clockwise:YES];
CAShapeLayer *circleMax;
circleMax = [CAShapeLayer layer];
circleMax.path = circlePathMax.CGPath;
circleMax.lineCap = kCALineCapRound;
circleMax.fillColor = [UIColor clearColor].CGColor;
circleMax.lineWidth = 10;
circleMax.strokeColor = [UIColor colorWithRed:255.0/255.0f green:255.0f/255.0f blue:255.0f/255.0f alpha:0.7f].CGColor;
circleMax.zPosition = 3;
[self.view.layer addSublayer:circleMax];
Run Code Online (Sandbox Code Playgroud)
我只能指定一个通用 lineCap
我在UITextField的右视图中添加了两个UIButton,但是voiceOver看不到它们(它“仅读取”包含的视图)。我已经将右视图的accessibilityElementsHidden设置为“否”。我不明白我在做什么错...
编辑:我子类化UITextField,可以与此相关吗?
我正在测试自动更新订阅,但遇到以下问题:
通过这种方式,只需使用付费AppleID登录一次就可以复制购买的商品。那么,如何从设备中删除收据?或告诉我是否还有其他解决方案...
我是核心数据新手,我想将 NSManagedObject (从本地数据库获取)转换为 JSON 字符串。这是一个具有关系的简单对象,如上所示:
这是我用于获取的代码:
func loadData() {
//1
guard let appDelegate = UIApplication.shared.delegate as? AppDelegate else {
return
}
let managedContext = appDelegate.persistentContainer.viewContext
//2
let fetchRequest = NSFetchRequest<NSFetchRequestResult>(entityName: "Bill")
//3
do {
let fetchedData = try managedContext.fetch(fetchRequest) as! [Bill]
} catch let error as NSError {
print("Could not fetch. \(error), \(error.userInfo)")
}
}
Run Code Online (Sandbox Code Playgroud)
如何将 fetchedData 转换为 JSON 字符串?我想使用 Codable,但我不知道它是否受支持。
我正在尝试使用 NFC。我按照以下步骤操作:
在此之后,我导入了 CoreNFC 并实现了这些代码:
@available(iOS 11.0, *)
extension EventPreviewViewController: NFCNDEFReaderSessionDelegate {
func readerSession(_ session: NFCNDEFReaderSession, didInvalidateWithError error: Error) {
let alert = UIAlertController.withOkButton(andTitle: NSLocalizedString("TitleWarning"), andText: NSLocalizedString("ErrorNFCInvalidate"), okHandler: nil)
self.present(alert, animated: true, completion: nil)
}
func readerSession(_ session: NFCNDEFReaderSession, didDetectNDEFs messages: [NFCNDEFMessage]) {
// TODO
}
}
class EventPreviewViewController: UITableViewController {
@available(iOS 11.0, *)
var nfcSession: NFCNDEFReaderSession {
return NFCNDEFReaderSession(delegate: self, queue: nil, invalidateAfterFirstRead: true)
}
@IBAction func startAccess(_ …
Run Code Online (Sandbox Code Playgroud) 我使用手势来缩放和移动 UIImageView(例如 Instagram 缩放)。当手势结束时,我想恢复 UIImageView 初始位置,但我无法获取初始中心的副本,因为它是引用类型。使用:
let prevCenter = myImage.center
Run Code Online (Sandbox Code Playgroud)
当然是没用的。我怎样才能复制它?
我已经使用 cocoapods 将 Facebook SDK 更新到最新版本:
当安装 Facebook 应用程序时,LoginManager()
不会调用回调。当未安装应用程序并使用浏览器时,它可以工作。
let loginManager = LoginManager()
loginManager.logIn(permissions: [.publicProfile, .email], viewController: self, completion: { loginResult in
switch loginResult {
case .failed(let error):
print("\(error)")
case .cancelled:
print("cancelled")
case .success(let grantedPermissions, let declinedPermissions, let accessToken):
print("\(grantedPermissions) \(declinedPermissions)")
}
})
Run Code Online (Sandbox Code Playgroud)
任何想法?
ios ×7
swift ×4
cashapelayer ×1
core-data ×1
facebook ×1
json ×1
nfc ×1
storyboard ×1
uitableview ×1
uitextfield ×1
value-type ×1
voiceover ×1
xcode ×1