小编shi*_*him的帖子

Swift标签栏视图prepareforsegue

在VC1(集合视图)中,这是我的prepareforsegue代码:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    let segue = segue.destinationViewController as TabBarViewController


    var selectedIndex = self.collectionView.indexPathForCell(sender as UICollectionViewCell)

    segue.selectedIndexPassing = selectedIndex?.row

}
Run Code Online (Sandbox Code Playgroud)

当我到达VC2(这是TabBarViewController)时,我printInn()selectedIndexPassing以查看返回的内容.它正确返回.然后,在VC2中,我将此prepareforsegue称为实际视图控制器,或标签栏中的第一个按钮:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    var segue = segue.destinationViewController as PlayerFromRosterViewController
    segue.selectedIndexPassingForDisplay = 1
}
Run Code Online (Sandbox Code Playgroud)

但是,当我selectedIndexPassingForDisplay在VC3(PlayerFromRosterViewController)中println()时,我得到了nil.为什么变量没有从Tab Bar导航控制器传递到VC3,AKA是第一个标签栏按钮视图.

uitabbarcontroller ios swift

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

如何在Swift对象数组中找到最大值?

假设我有一个带Usr对象的数组.和Usr对象有属性age.除了Usr逐个读取对象,并逐个比较age值之外,是否有任何快捷方式可以执行此操作?谢谢.

arrays swift

7
推荐指数
6
解决办法
2万
查看次数

iOS UI测试:如何获取UIAlert的消息

我的应用程序有一个登录屏幕.如果用户按下登录按钮而未在用户名或密码字段中输入任何文本,则应用程序将显示带有错误消息的UIAlert.

我试图在UI测试中模拟这个逻辑,并想断言UIAlert正在显示正确的消息.但是,我找不到一种方法让UI Test访问Alert的message属性.这是测试记录器生成的代码:

func testLoginWithoutPasswort() {
    let app = XCUIApplication()
    let emailTextField = app.textFields["email"]
    emailTextField.tap()
    emailTextField.typeText("xxx@gmail.com")
    app.buttons["Login"].tap()
    app.alerts["Error"].collectionViews.buttons["OK"].tap()
}
Run Code Online (Sandbox Code Playgroud)

反正我是否可以提取UIAlert消息String的值,所以我可以对它进行断言?

ios xcode7 xcode-ui-testing

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

如果我推送修改后的提交,它将创建一个新的提交

我已经在远程分支上推送了一个提交,现在我想改变它的内容,所以我尝试了git修改.如果执行git status,则表示两个分支分别具有1个和1个不同的提交.现在,如果我使用相同的提交消息推送修改后的提交将添加新提交,或者它将更改我推送的最后一次提交?

git push git-amend

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

如何处理线程和领域?(IOS)

我使用Realm来存储我的模型对象.在我的对象中,我有一个函数,它NSData从自己的属性值生成.这一代可能很长,所以我想NSData在一个带有处理程序块线程中生成我.

我的问题是Realm数据访问只能在Realm创建实体(实际上是主线程)上实现.因此,当我RealmObject在一个线程中访问我的属性时,应用程序崩溃.根据Realm的规格,这是正常的.但是NSData根据Realm限制使我的生成在一个线程中的最佳解决方案是什么?

其实我有两个想法:

  • 创建一个Realm特定的调度队列,并使我的所有Realm访问权限在此队列中写入
  • 在临时结构(或一组变量)中获取所有需要的属性,并使用此结构/变量在线程中生成我NSData的.

我假设很多Realm用户需要处理线程和Realm,所以你在这种情况下做了什么?

multithreading realm dispatch ios swift

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

检测WKWebView完成加载

请问我有一个问题,我怎么能检测到WKWebView完成加载所以我可以从中获取URL,例如webView委托方法?我实现WKWebView的委托方法,但我无法检测何时完成加载视频?

以下我的代码:

import UIKit
import WebKit

class ViewController: UIViewController, WKUIDelegate, WKNavigationDelegate {

    var webView: WKWebView!

    override func viewDidLoad() {
        super.viewDidLoad()
        let preference = WKPreferences()
        preference.javaScriptEnabled = true
        let configuration = WKWebViewConfiguration()
        configuration.preferences = preference
        webView = WKWebView(frame: view.bounds, configuration: configuration)
        view.addSubview(webView)

        webView.uiDelegate = self
        webView.navigationDelegate = self
        webView.load(URLRequest(url: URL(string: "http://www.youtube.com")!))
    }

    func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
        print("finish loading video")
    }    
}
Run Code Online (Sandbox Code Playgroud)

但是当我从youtube完成加载视频时,上面的方法不会调用它

非常感谢你

swift wkwebview

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

iOS 11应用提交:“符号文件过多”

我的目标是iOS 11,现在提交该应用程序后,我收到了一封来自Apple的电子邮件,警告为“符号文件过多”。

看起来好像CocoaPods框架已包含在不需要的架构中。

谁能显示正确的设置,以避免在iOS 11上包含不需要的框架?

ios cocoapods arm64 ios11

7
推荐指数
2
解决办法
2550
查看次数

在构建时限制中删除

在此输入图像描述

我用谷歌搜索,但找不到满意的答案.

  • 什么是构建时删除?
  • 为什么这个用?任何例子?

storyboard ios autolayout

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

Xcode 8如何在Objective-C中使用核心数据代码生成类?

我正在观看本教程,在Xcode 8中使用Core Data,视频使用的是Swift.在视频中,他进入Task了核心数据模型中命名的实体,然后在他能够调用的代码中Task:

let task = Task(context: context)
Run Code Online (Sandbox Code Playgroud)

我有一个叫做的实体Tag.如何使用Objective-C在代码中访问Tag?Codegen在Core Data模型中设置,但我在项目中看不到任何其他文件.如果我尝试:

Tag test = [[Tag alloc] init];
Run Code Online (Sandbox Code Playgroud)

我收到一个Tag不存在的错误.

xcode core-data objective-c ios xcode8

6
推荐指数
2
解决办法
6097
查看次数

会话无效.请再次登录appcelerator

我在2016年在Appcelerator Studio中为iOS(iPad)启动了一个应用程序项目.

现在我无法在模拟器中或在去年没问题的iOS设备上打开它.在控制台中它说:

错误:会话无效.请再次登录.

怎么了?

我正在使用最新版本的Xcode和Appcelerator.Titanium SDK:6.1.0.GA用于项目.

即使我只使用默认文件启动一个新项目,我也会得到相同的错误代码.

/尼娜

ipad ios appcelerator-studio

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