小编Ita*_*chi的帖子

如何在设置leftBarButtonItem后在UINavigationController中启用后退/左侧滑动手势?

我从这里得到了相反的问题.默认情况下iOS7,UINavigationController堆栈的后滑动手势可以弹出呈现的内容ViewController.现在我只是穿着所有self.navigationItem.leftBarButtonItem风格的制服ViewControllers.

这是代码:

self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithImage:LOADIMAGE(@"back_button") style:UIBarButtonItemStylePlain target:self action:@selector(popCurrentViewController)];
Run Code Online (Sandbox Code Playgroud)

之后,navigationController.interactivePopGestureRecognizer被禁用.如何在不删除自定义的情况下启用弹出手势leftBarButtonItem

谢谢!

objective-c uinavigationbar uinavigationcontroller uinavigationitem ios

59
推荐指数
10
解决办法
8万
查看次数

Appstore评论员是否允许我们在iOS8中使用动态库?

我阅读了很多关于动态库使用的文章,包括这个页面" 你能构建动态库...... ".

正如Apple文档所述," Frameworks for iOS.iOS开发人员现在可以创建动态框架.框架是一组代码和资源,用于封装在多个项目中有价值的功能.框架与扩展完美配合,共享可由两者使用的逻辑主要应用程序和捆绑扩展. ",请参阅此处的完整页面.

考虑到安全问题,我在iOS8之前得到了动态库的拒绝原因,详见" DarkDust的答案 ".但是,它如何在iOS8中"正常工作"?@appstore_reviewers?

无论如何,目前我正在编写一个示例演示应用程序并尝试将其上传到Appstore进行审核,主要功能是从Internet下载框架到客户端并将其下载.希望真正"正常"!

此外,部署目标是iOS7.0,不确定它是否可以正常运行.我对"动态库"和"框架"之间的差异没有那么清楚的理解,我认为它们是相同的,在这个线程中我的意思是"可可触摸框架"可以在Xcode 6中创建.

一些背景:我正在尝试构建一个不包含扩展功能的iOS应用程序,我的可可触摸框架可以轻松扩展而无需上传新版本,因为它来自互联网....

更新在这里发布了一个演示项目 GMDemo,将尝试上传到Appstore.

UPDATE2 在iOS设备中多次尝试后,我无法使用无效代码签名错误来动态我的动态框架.对不起,这里没有好消息.(差点忘了更新这个问题,对不起!BTW)

xcode cocoa-touch objective-c dylib ios

12
推荐指数
1
解决办法
5500
查看次数

iOS9,企业应用程序中的bitcode

请确认:

Bitcode是编译程序的中间表示.您上传到iTunes Connect的包含bitcode的应用将在App Store上进行编译和链接.

来自Bitcode(iOS,watchOS).

它是App Store谁编译和链接的应用程序,所以怎么样的企业应用程序?

我喜欢这个iOS9功能,因为用户可以将所需的切片下载到设备,以便以最小的文件大小快速更新应用程序.Bcodeode默认在Xcode 7中启用,但对于企业应用程序,我们将应用程序更新上传到我们的企业服务器,我们的客户用户通过链接从我们的服务器下载它.此过程中没有应用商店.

对于启用了Bitcode的企业应用程序,这样可以吗?如果是这样,谁将拥有编译和链接职责?

compilation ios9 xcode7 bitcode app-thinning

7
推荐指数
1
解决办法
1025
查看次数

将模型存储在 UserDefault 中时如何处理模型迁移?

我有一个名为User符合CodableSwift4 中引入的对象。

例如,这个对象曾经是

struct User: Codable {
    var firstName: String
}
Run Code Online (Sandbox Code Playgroud)

我们使用PropertyListDecoder().decode(User.self, from: data)PropertyListEncoder().encode(value)将其编码UserData并解码DataUser

现在我们将对象更新为

struct User: Codable {
    var firstName: String
    var isLoggedIn: Bool
}
Run Code Online (Sandbox Code Playgroud)

如果我们的应用程序从旧应用程序更新,旧应用程序Data存储在UserDefault. 更新后应用程序要做的第一件事就是获取它Data并尝试User使用PropertyListDecoder().decode(User.self, from: data). 但是,它给出了一个错误:

po PropertyListDecoder().decode(User.self, from: data)
? DecodingError
  ? keyNotFound : 2 elements
    - .0 : CodingKeys(stringValue: "isLoggedIn", intValue: nil)
    ? .1 : Context
      - …
Run Code Online (Sandbox Code Playgroud)

nsuserdefaults ios swift

5
推荐指数
1
解决办法
557
查看次数

iOS:如何区分iPhone模式和iPad模式?

我正在构建一个通用的iOS应用程序,一些配置变量在iPhone模式和iPad模式之间具有不同的价值.请注意,我说模式字.

据我所知,用户可以从AppStore在iPad上安装iPhone应用程序,因此我对以下代码感到困惑:

NSString *deviceType = [UIDevice currentDevice].model;

if([deviceType rangeOfString:@"iPad" options:NSCaseInsensitiveSearch].location != NSNotFound)
{
    fCurrentDeviceIsiPad = YES;
    // ...
}
else // iPhone? iPod? 
{
    fCurrentDeviceIsiPad = NO;
    // ...
}
Run Code Online (Sandbox Code Playgroud)

如果用户在iPad中安装并运行iPhone版本应用程序,则fCurrentDeviceIsiPad将为YES(我在我的iPad版iPhone版本中测试了结果,当然,我首先将部署设备更改为"iPhone").

所以,我的问题是如何在不考虑设备类型的情况下区分应用模式

有人发布了有关操作系统宏的内容,我已经在我的应用程序中尝试过了.

#if TARGET_OS_IPHONE
  // iPhone specific code
  #error A
#elif TARGET_OS_IPAD
  // iPad specific code
  #error B
#else
  // Unknown target
  #error C
#endif
Run Code Online (Sandbox Code Playgroud)

这也没有达到我的观点.我将调试设备切换到iPhone模拟器和iPad模拟器,所有编译错误都出现在错误A上.我是否误解了这些宏的含义?

还有一个问题,这将是我第一次将iOS提交到AppStore,它是一款通用应用.对于提交过程,是上传iPhone版二进制文件和iPad版二进制文件的独立过程吗?您可能会得到我的新观点:如果答案是肯定的,我可以使用自定义宏手动构建两个版本.

谢谢!

更新:问题解决了!

代码[UIDevice currentDevice].model与之前的代码不一样UI_USER_INTERFACE_IDIOM(),前者总是返回真实的设备类型,后者是当前运行的应用程序模式/版本.

iphone objective-c ipad ios

0
推荐指数
1
解决办法
338
查看次数