小编Qua*_*ntm的帖子

XCode - 如何重置/“删除”从 Xcode 运行的 mac os 应用程序(类似于删除 ios 模拟器中的应用程序)?

使用 iOS 模拟器时,我只需删除该应用程序并重新运行该应用程序即可重新开始。对于 macOS 应用程序,这是如何完成的?我找不到它。“DerivedData”内有一个项目文件夹,但删除它也会扰乱整个项目,我必须重新获取所有依赖项和内容。

谢谢!

macos xcode

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

使用IOS 11拖放功能拖动单元格时,UICollectionViewFlowLayout中究竟发生了什么?

我正在尝试为我实现拖放UICollectionViews(我也想了解UICollectionViewLayouts).我实现了dragDelegate/dropDelegate集合视图的方法,现在我可以拖动单元格了.

我还设置了drop的意图.insertAtDestinationIndexPath,以便单元格移动到拖动单元格的位置(因此当将拖动的单元格悬停在其上时,布局会发生变化).

这与之完美配合UICollectionViewFlowLayout.但是,我正在使用IGListKit它基本上为集合视图中的每个单元格使用一个部分.部分通常总是在新行上渲染,但我希望在同一行上有多个部分(=单元格).这就是我将布局子类化的原因:

class CustomFlowLayout: UICollectionViewFlowLayout {

override var collectionViewContentSize: CGSize {
    return CGSize(width: contentWidth, height: contentHeight)
}

fileprivate var contentHeight: CGFloat = 0

fileprivate var contentWidth: CGFloat {
    guard let collectionView = collectionView else {
        return 0
    }
    let insets = collectionView.contentInset
    return collectionView.bounds.width - (insets.left + insets.right)
}

var cachedAttribtues = [UICollectionViewLayoutAttributes]()

override func prepare() {
    super.prepare()
    cachedAttribtues = []
    guard let collectionView = collectionView else …
Run Code Online (Sandbox Code Playgroud)

drag-and-drop ios uicollectionview uicollectionviewlayout swift

7
推荐指数
0
解决办法
379
查看次数

具有自定义配置的 UICollectionView 列表 - 如何将单元格中的更改传递到视图控制器?

我已经使用UICollectionView自定义UICollectionViewCellUIContentConfiguration使用新的iOS 14API 实现了一个列表。我一直在关注本教程:https://swiftsenpai.com/development/uicollectionview-list-custom-cell/(以及Apple的示例项目)

基本上你现在有 a UICollectionViewCell、 aUIContentConfiguration和 a UIContentView。仅仅cell设置其配置,content configuration保存单元的数据及其所有可能的状态,并且是替换 的content view实际值。UIViewUICollectionViewCell.contentView

我已经让它工作了,它非常棒而且干净。但有一点我不明白:

您如何向UIContentView或 中添加回调以将单元格中所做的更改(例如UISwitch切换或更改)传达到?和 单元格之间的唯一连接位于创建 的数据源时的单元格注册内部:UITextFieldviewControllerviewControllercollectionView

// Cell
class Cell: UICollectionViewListCell {
    
    var event: Event?
    var onEventDidChange: ((_ event: Event) -> Void)?
    //...
}


// Example cell registration in ViewController
let eventCellRegistration = UICollectionView.CellRegistration<Event.Cell, Event> { [weak self] (cell, …
Run Code Online (Sandbox Code Playgroud)

ios uicollectionview swift diffabledatasource

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

使用视图模型与在视图本身中使用 @Binding 时如何使用绑定?

@State并且@BindingSwiftUI.

struct ColorView: View {
    @Binding public var isBlue: Bool

    var body: some View {
        Rectangle()
            .foregroundColor(isBlue ? .blue : .red)
            .onTapGesture {
                self.isBlue.toggle()
        }
    }
}

struct TestView: View {
    @State var isBlue: Bool = false

    var body: some View {
        ColorView(isBlue: $isBlue)
    }
}
Run Code Online (Sandbox Code Playgroud)

它可以毫无问题地工作,而且非常简单。但是MVVM说你应该把所有的视图数据放在一个视图模型类中,以将 UI 与模型分开。但你失去了@State@Binding彻底。您似乎失去了这种 2 向绑定。当然,您可以使用Combine或其他方式手动完成,但这不应该是正确的方法,对吗?

每当我尝试任何事情时,SwiftUI当您使用视图模型时,这真的很容易和方便。然而,一旦你把所有东西都放在一个视图模型类中,一切都会崩溃,没有什么比这更方便的了。这不可能,他们早就想到了。所以我在这里遗漏了一些东西。我真的很感激任何帮助。您将如何使用视图模型对上述示例进行编码(无需手动“破解”任何内容)?我试过了,但它甚至没有编译:

struct ColorView: View {
    @ObservedObject var viewModel: ViewModel

    class ViewModel: ObservableObject …
Run Code Online (Sandbox Code Playgroud)

swift swiftui

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

NSManagedObjectID 与自定义 UUID 标识符属性 - 获取性能

我真的很想避免使用它NSManagedObjectID作为将我的模型结构连接到其 CoreData 对象的方式。我的意思是这样的:

假设我Book在 CoreData 中有一个实体,然后我有一个像这样的模型结构,代表我的模型层:

struct BookModel {
    let name: String
    ...

    let objectID: NSManagedObjectID // I need this to refer back to the entry in the database
}
Run Code Online (Sandbox Code Playgroud)

我不喜欢这种方法。它使得使用结构变得乏味,例如,测试很烦人,因为我总是必须生成虚拟 objectId 或使其成为BookModel.objectID可选。

我想要的是实体内部id的类型属性。这将很容易连接到结构,并且还允许结构在没有数据库的情况下正确存在:UUIDBook

struct BookModel {
    let name: String
    ...
    let id: UUID
    ...

    func object() -> Book {
        // Retrieve managed object using a fetch request with a predicate.
    }
}
Run Code Online (Sandbox Code Playgroud)

我注意到您实际上可以UUID在实体中拥有属性。然而,性能差异似乎是巨大的。我创建了一个尝试获取单个对象 10000 次的示例。

首先,我使用context …

core-data nsmanagedobjectcontext nsmanagedobjectid swift

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

UICollectionViewListCell 始终将高度设置为 44,这与我在 AutoLayout 中设置的其他任何内容相冲突

我正在使用 newUICollectionViewListCellUIContentConfigurations,它们非常棒,但我不知道如何更改UIKit自动为这些单元格设置的默认单元格高度 44。这是一个示例单元格:


class TextFieldCell: UICollectionViewListCell {

    struct ContentConfiguration: UIContentConfiguration, Hashable {

        struct Handlers: ContentConfigurationHandlers {
            var onTextChanged: ((_ newText: String) -> Void)?
        }

        var handlers: Handlers?

        var text: String?
        var placeholder: String?
        var keyboardType: UIKeyboardType?

        func makeContentView() -> UIView & UIContentView {
            ContentView(configuration: self)
        }

        func updated(for state: UIConfigurationState) -> TextFieldCell.ContentConfiguration {
            guard let state = state as? UICellConfigurationState else { return self }
            var updatedConfiguration = self
            return updatedConfiguration
        }

    }

    class …
Run Code Online (Sandbox Code Playgroud)

ios autolayout uicollectionview uicollectionviewcell swift

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

javascript:onClick =""与jQuery.Click()

我有很多关于onClick-Events的页面(每个页面都有自己的onClick-Event的其他元素).所有页面都包含在一个主页面中(index.php)

因此,我无法将所有jQuery onClick-Events放在页面的头部(因为<head>它只是在index.php,而不是在包含的页面中)

现在更好的是<script>...</script>在我包含的每个页面中制作一个吗?因为这不会在<head>.

或者我应该使用HTML-attribute onClick=""

html jquery onclick

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

iOS - UICollectionView - 一次插入多个项目时,如何逐个淡化它们而不是同时淡化它们?

如果您有一个集合视图并且您通过插入几个来更改项目,则默认布局会同时淡出它们.是否有可能一个接一个地淡化它们?

我在考虑子类化UICollectionViewLayout,但我不确定这是否会像那样工作.

我是否真的必须添加逻辑,以便不会同时发生多个插入?(这样我插入一个项目,等一下,插入第二个项目,...手动完成)必须有更好的方法.我希望

谢谢你的帮助

uicollectionview uicollectionviewlayout swift

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

处理多个 UICollectionView'interactiveMovements - 崩溃:UIDragSnappingFeedbackGenerator 已经被交互

(有关更多信息,请参阅更新 3。我修复了原始问题,现在出现了一个我以前从未见过的异常​​)

所以我一直在尝试实现我自己版本的 IOS11 的拖放功能。我已经实现了一个自定义的gesture recognizer和我自己的拖放会话管理器,称为DragAndDropSession.

我的应用程序的情况如下:我有一个“全屏”垂直滚动collectionView,它collectionView在每个单元格(行)中保持水平滚动。例如,有点像 netflix 所拥有的。

在拖动项目时,我希望这些水平collectionViews 为拖动的项目动态腾出空间(就像 IOS11 的拖放一样)。我通过向行添加一个不可见的单元格collectionView然后collectionView.beginInteractiveMovement(..)在该单元格上使用来做到这一点。这样,当我不断将其更新到当前触摸位置时,它看起来像是在移动间隙。(我还没有找到更好的方法)。

每次触摸移动到不同的行时,我停止第一个interactive movement,删除空单元格,并将其添加到新的collectionView,在那里我再次开始interactive movement. 这里的困难在于管理方面,以便一切都得到“清理”,然后重新正确设置。

由于这很难解释,我创建了一个演示项目来展示所有内容(包括我稍后将要告诉您的崩溃):

https://github.com/d3mueller/DragAndDropTest (我希望它能正常工作。如果没有,请告诉我)

一些东西:

  • 这是一项正在进行的工作。未实现删除项目,所以不要尝试:D。事情会发生,那不应该发生。我只实现了拖动
  • 我正在使用IGListKithttps://github.com/Instagram/IGListKit)来管理我的collectionViews. 不过,这可能与我的问题无关。(我试图评论重要的部分)
  • 在我的代码中,您会经常看到...SectionController. 这是 collectionView (IGListKit) 中单元格的“管理器”。例如,垂直滚动中的collectionView每一行都有一个部分控制器,其中包含该行的数据,以及该行的 collectionView 等。
  • 下面,我将尝试解释我的问题。遗憾的是,我无法真正在这里发布实际的代码片段,因为您需要了解上下文才能了解那里发生的事情。这就是我添加演示项目的原因。

好的,现在我的问题是:它崩溃了。有时。它给了我这个错误信息:

'NSInternalInconsistencyException',原因:'尝试在重新排序过程中开始重新排序集合视图'

我设置了一个断点来捕获这个异常,所以我知道它在 中崩溃了DragAndDropSession.swift: Line 194,这是这样的:

rowCollectionView.beginInteractiveMovementForItem(at: rowIndexPath)
Run Code Online (Sandbox Code Playgroud)

在这一行中,我为手指当前悬停的 collectionView 行开始了一个新的交互式移动。我只是不知道为什么它会走到这条线,因为它已经开始了互动运动。上面几行(第 171 行)我取消了交互动作。

有一个特定的案例/情况我没有在我的代码中涵盖/捕捉。我就是找不到。我在这上面花了几个小时。 …

ios uicollectionview swift

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

如何使用不同的捆绑标识符进行 Beta 测试和 App Store 发布

我希望这不会被视为重复。有一个关于为您的应用程序使用多个包标识符的问题:https : //stackoverflow.com/a/20151432/3134192

已接受答案中的链接准确地解释了我想要做什么。我想要 3 个不同的包标识符:beta、debug、app store。我想这样命名它们:

App Store: {currentIdentifier}
Beta: {currentIdentifier}.beta
Debug: {currentIdentifier}.debug
Run Code Online (Sandbox Code Playgroud)

但是,我已经将我的应用程序上传到了,App Store Connect并且已经提交了一个用于 beta 测试的构建TestFlight{currentIdentifier}用作包标识符)。我现在不知道怎么改。有没有办法告诉 App Store Connect 我想对 TestFlight 使用 beta 标识符,而对 App Store 版本使用另一个标识符?


我唯一的猜测是:

我必须为 beta 包标识符创建另一个分发配置文件,在 App Store Connect 中创建一个新的 AppID 和一个新的应用程序条目。然后我会有两个版本的应用程序,旧版本(带有当前有效的 beta 测试和包标识符“ {currentIdentifier}”)和新版本(带有包标识符“{currentIdentifier}.beta ”)。然后我只需要在测试版上启动任何新的测试版,并在另一个上启动任何应用商店版本。

这样对吗?当我尝试为同一个应用程序创建多个 AppID 等时,恐怕我会破坏某些东西。

xcode app-store ios app-store-connect

5
推荐指数
0
解决办法
1716
查看次数