小编seb*_*ien的帖子

在故事板中连接Cell Prototype的插座

我是故事板的新手,所以我有一些困难......

我已经创建了一个TableViewController,我想自定义Cell Prototype.在Cell Prototype中,我添加了几个标签,我想用自己的类定制,它继承自UITableViewCell(AreaListCell).在Storyboard中,对于Cell Prototype,我已将Custom Class配置为"AreaListCell",其样式为"Custom".

在故事板中,当我选择Cell Prototype然后选择助手时,助手会显示我的类,它实现了UITableViewController(AreasTableViewController)而不是
我的"AreaListCell"类.

结果是我可以创建插座(使用Ctrl + Drag从Cell Prototype的标签)到AreasTableViewController类,但不能创建到AreaListCell类!知道如何将Cell Prototype与我的AreaListCell类连接起来吗?

谢谢你的帮助!

storyboard uitableview iboutlet ios

36
推荐指数
2
解决办法
5万
查看次数

没有AppStore的iOS App部署

我正在我的公司开发一个应用程序.我们希望将此应用程序分发给我们的客户,但不使用Apple的AppStore,是否可能?

我听说过MDM(移动设备管理器),但我不确定它是否会满足这种需求?

我也听说过内部部署的企业开发人员许可证,但如果我理解正确,这意味着应用程序只能部署在我的公司内部而不是我们的客户,这是正确的吗?

谢谢你的澄清.

勒布

deployment app-store mdm ios

23
推荐指数
2
解决办法
3万
查看次数

touchIDLockout在iOS 11.0中已弃用

使用Xcode 9为IOS11编译我的应用程序时,我收到以下警告:

warning: 'touchIDLockout' was deprecated in iOS 11.0: use LAErrorBiometryLockout

warning: 'touchIDNotEnrolled' was deprecated in iOS 11.0: use LAErrorBiometryNotEnrolled

warning: 'touchIDNotAvailable' was deprecated in iOS 11.0: use LAErrorBiometryNotAvailable
Run Code Online (Sandbox Code Playgroud)

我正在使用touchID,但我没有使用touchIdLockout ... cste,touchID工作正常.

我该如何删除这些警告?


编辑(不是原作者):

我将此追踪到一个原因.LAError从我的代码中的LocalAuthentication框架引用就足以显示这些警告.

重现的步骤(在Xcode 9.2中尝试过):

  1. 创建一个新的iOS应用程序(单一视图模板).请注意,iOS部署目标设置为iOS 11.2.
  2. 将这些行添加到AppDelegate.swift:

    import LocalAuthentication
    
    Run Code Online (Sandbox Code Playgroud)

    还有一行appDidFinishLaunching:

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        let _: LAError? = nil
        return true
    }
    
    Run Code Online (Sandbox Code Playgroud)
  3. 构建应用程序.

let _: LAError? = nil行足以显示三个警告.但是,警告与任何特定代码行都没有关联.它们出现在构建日志中,没有任何文件/行引用:

<unknown>:0: warning: 'touchIDLockout' was …
Run Code Online (Sandbox Code Playgroud)

xcode compilation ios touch-id swift

19
推荐指数
3
解决办法
3971
查看次数

滚动后,UICollectionView的单元格不会始终刷新

我在我的故事板(iPad)中定义了一个包含a的视图UICollectionView,在视图的底部还有一个UIToolbar.在UICollectionView我添加了一个UICollectionViewCell(由iPadCellCollectionViewCell类实现),其中包含另一个视图,它是一个Core-Plot Graph(一个CPTGraphHostingView类).

我有一个名为X的类来实现UICollectionViewDelegateUICollectionViewDataSource.

在类X中,我构建了我的视图的每个单元格(在ViewDidLoad)Core-Plot Graph中,我有以下代码将图形链接到UICollectionViewCell

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
static NSString* cellId = @"ChartCollectionId"; 

iPadCellCollectionViewCell* cell = [self.theCollectionView dequeueReusableCellWithReuseIdentifier:cellId forIndexPath:indexPath];

MyChart* chart = [_charts objectAtIndex:indexPath.row];

cell.hostingView.hostedGraph = chart.barChart;

return cell;
Run Code Online (Sandbox Code Playgroud)

}

它工作正常,我的所有图表都正确显示在屏幕上.当用户滚动视图时,会出现问题,然后一个或多个单元格变为"空白".我真的不明白为什么.

我已经找到一个解决办法,而不是添加CPTGraphHostingViewUICollectionViewCell在界面生成器,我建立它自己和以前的代码变为:

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
static NSString* cellId = @"ChartCollectionId"; 

iPadCellCollectionViewCell* cell = [self.theCollectionView dequeueReusableCellWithReuseIdentifier:cellId forIndexPath:indexPath];


[cell.contentView addSubview:[_hostingViews objectAtIndex:indexPath.row]]; …
Run Code Online (Sandbox Code Playgroud)

ios cptbarplot uicollectionview uicollectionviewcell

14
推荐指数
2
解决办法
1万
查看次数

无法使用spatialite创建列 - >意外的元数据布局

我对spaceite非常新.我在Max OS Mountain lion上运行,我安装了SQLite版本3.7.17和libspatialite 4.1.1(使用自制程序)

我可以在SQLite中加载没有错误的扩展libspatialite:

SELECT load_extension('/usr/local/Cellar/libspatialite/4.1.1/lib/libspatialite.dylib');
Run Code Online (Sandbox Code Playgroud)

我可以创建一个简单的表:

sqlite> CREATE TABLE test_geom (
   ...>   id INTEGER NOT NULL
   ...>     PRIMARY KEY AUTOINCREMENT,
   ...>   name TEXT NOT NULL,
   ...>   measured_value DOUBLE NOT NULL);
Run Code Online (Sandbox Code Playgroud)

但是当我添加带有spatialite的Geometry列时,我收到以下消息:

sqlite> SELECT AddGeometryColumn('test_geom', 'the_geom',4326, 'POINT');
AddGeometryColumn() error: unexpected metadata layout
0
Run Code Online (Sandbox Code Playgroud)

我不知道解决这个问题.有人可以帮忙吗?

sqlite macos spatialite

10
推荐指数
2
解决办法
1989
查看次数

NSURLSession出现IOS9 SSL错误

我开发了一个使用HTTPs与服务器通信的IOS应用程序(我也是服务器的开发者,它嵌入了一个Tomcat服务器).

这个应用程序与IOS8没有任何问题,但它不适用于IOS9.

发送HTTPs请求时出现以下错误:

Session download has failed : Error Domain=NSURLErrorDomain Code=-1200 "An SSL error has occurred and a secure connection to the server cannot be made." UserInfo=0x7fa9c44b2e40 {NSErrorFailingURLStringKey=https://127.0.0.1:8443/MyServer/MyApp, NSLocalizedRecoverySuggestion=Would you like to connect to the server anyway?, _kCFStreamErrorDomainKey=3, NSErrorFailingURLKey=https://127.0.0.1:8443/MyServer/MyApp, _kCFStreamErrorCodeKey=-9802, NSLocalizedDescription=An SSL error has occurred and a secure connection to the server cannot be made.}
Run Code Online (Sandbox Code Playgroud)

根据Apple文档,当错误代码= -1200发生时,这是因为TLSv1.1而不是TLSv1.2.我已经使用openSSL命令验证了我的服务器正在使用TLSv1.2.

在info.plist中设置属性NSAllowsArbitraryLoads = true时,错误消失但我不想保持这样.

我的服务器使用自签名证书,可能是问题的原因?下面是我用于didReceiveChallenge的代码

- (void)URLSession:(NSURLSession *)session didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition disposition, NSURLCredential *credential))completionHandler {

[RequestURLUtilities dumpChallenge:challenge];


if (challenge.protectionSpace != Nil) {
    NSURLProtectionSpace …
Run Code Online (Sandbox Code Playgroud)

authentication ssl x509certificate ios nsurlsession

9
推荐指数
2
解决办法
4954
查看次数

缩放整个UICollectionView

我有一个iPad应用程序,我正在使用UICollectionView,每个UICollectionViewCell只包含一个UIImage.目前我每页显示每9个UIImages(3行*3列),我有几页.

我想使用Pinch Gesture缩放整个UICollectionView来增加/减少每页显示的行数/列数,最好是在Pinch手势期间获得漂亮的缩放动画!

目前,我在我的UICollectionView上添加了一个Pinch Gesture.我抓住Pinch Gesture事件使用比例因子计算行数/列数,如果它已经改变,那么我使用以下方法更新完整的UICollectionView:

[_theCollectionView performBatchUpdates:^{
     [_theCollectionView deleteSections:[NSIndexSet indexSetWithIndex:0]];
     [_theCollectionView insertSections:[NSIndexSet indexSetWithIndex:0]];
 } completion:nil];
Run Code Online (Sandbox Code Playgroud)

它有效,但在过渡期间我没有平滑的动画.

任何的想法?UICollectionView继承自UIScrollView,是否有可能重用UIScrollView Pinch手势功能来实现我的目标?

zoom uiscrollview ios uicollectionview

8
推荐指数
2
解决办法
1万
查看次数

如何对地理数据进行排序以便快速搜索

我有一些地理定位的对象(我为每个对象提供纬度+经度).我的应用程序需要显示移动设备GPS位置周围3公里的对象.我有几千个对象,它们本地化在大面积区域(例如,几个美国州,几个小国),这意味着在我的对象列表中我可以有一个位于纽约市,另一个位于迈阿密但我也可以拥有对象非常接近(几米).

目前,我的应用程序执行迭代搜索.对于每个物体,我用GPS位置计算距离,如果距离<= 3KM,那么我保留物体,否则我忽略它.这个算法不是很有效,我正在寻找一种能提供更好性能的算法.

我想有一种方法可以使用地理坐标对物体进行排序,然后可以更快地找到位于GPS位置周围的物体.

我目前的想法是计算具有"极值点"的矩形,北/南/东/西(从GPS位置的3km)以限制搜索区域.接下来,我将仅计算此框内对象的距离.我认为可以做得更好但我没有这个想法......

任何建议将不胜感激;-)谢谢,

SEB.

sorting algorithm search geolocation latitude-longitude

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

哈希客户端/服务器应用程序的用户密码

我有一个与Web服务器通信的iPhone应用程序.启动App时,用户必须使用用户名和密码进行身份验证.应用程序和Web服务器之间的通信是安全的(HTTPS)但我不想向Web服务器发送清除密码,我只想发送密码的"签名"(签名将存储在Web服务器上的数据库).

在IOS上创建这个"签名"的最佳解决方案是什么?我应该使用MD5还是别的什么?

我是否需要使用外部库来构建此签名,还是可以使用IOS SDK中的SecKeyEncrypt来完成?

从长远来看,我将在Android上运行一个应用程序,我必须能够为IOS和Android生成相同的签名.

谢谢你的帮助,

塞巴斯蒂安.

md5 password-protection string-hashing ios

6
推荐指数
1
解决办法
5678
查看次数

嵌入式Jetty HTTP/2无法与Firefox/Chrome一起使用,但Safari似乎没问题

我正在嵌入式Jetty(9.3.0.v20150612)中实现一个servlet,我想使用HTTP/2.

我正在启用ALPN进行协议协商,以选择HTTP1.1或HTTP2.当我从Safari 8(仅支持HTTP1.1)或Safari 9(支持HTTP1.1和HTTP2)向我的servlet发送HTTPs请求时,我从我的servlet得到答案.当我从Firefox 39执行相同的请求时,它不起作用,我只是得到NS_ERROR_ABORT.我在Chrome上遇到了同样的问题.

我有两个问题:

  1. 为什么我没有从Chrome和Firefox获得答案
  2. 我怎么知道在Safari 9中是否使用了HTTP/2而不是HTTP1.1?(我的IOS9应用程序也没有问题连接)

下面是执行Jetty初始化的代码

    private void startHTTP2Server() {
    WebServerProperties webProperties = WebServerProperties.getInstance();

    HttpConfiguration config = getHttpConfiguration();

    HttpConnectionFactory http1 = new HttpConnectionFactory(config);
    HTTP2ServerConnectionFactory http2 = new HTTP2ServerConnectionFactory(config);

    NegotiatingServerConnectionFactory.checkProtocolNegotiationAvailable();
    ALPNServerConnectionFactory alpn = new ALPNServerConnectionFactory();
    alpn.setDefaultProtocol(http1.getProtocol()); // sets default protocol to HTTP 1.1

    // SSL Connection Factory
    SslContextFactory sslContextFactory = new SslContextFactory();
    sslContextFactory.setKeyStorePath(webProperties.getKeystore());
    sslContextFactory.setKeyStorePassword(webProperties.getKeystorePassword());
    //sslContextFactory.setKeyManagerPassword(KEYSTORE_PW);
    //sslContextFactory.addExcludeCipherSuites(".*RC4.*");
    //sslContextFactory.addExcludeCipherSuites("TLS_DHE_RSA.*");
    sslContextFactory.setProtocol(webProperties.getTLSVersion()); // SEB
    SslConnectionFactory ssl = new SslConnectionFactory(sslContextFactory, alpn.getProtocol());

    Server server = new Server();
    //ServerConnector connector = new ServerConnector(server, ssl, …
Run Code Online (Sandbox Code Playgroud)

java safari firefox jetty http2

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