小编Mor*_*eu5的帖子

如何重新排序UITableView的部分?

2009年的这个问题没有得到解答,这是互联网上极少数提到这个问题的问题之一.

问题:我想以与行处理相同的方式重新排序UITableView的各个部分(即通过拖动).

我看到这种方式的方式是:你打开桌面上的编辑,重新排序指标出现.当您开始拖动一个节标题(或一个单元格作为假节目标题,这是次优[1])时,所有常规单元格都会"消失",因此您只能移动各个部分(如果你更容易有超过几个部分).

LPRTableView似乎解决了这个问题,但在重新排序部分时正确设置非常棘手.我尝试了一整天并没有取得多大成功.另外,[1].

一个不那么好但可以接受的解决方案是在标题中有像⬆️⬇️这样的按钮(这里可以使用正确的标题),但它有点尴尬.

另一个不那么好但可以接受的解决方案是有一个额外的步骤(比如一个按钮),它会调出一个新的UITableView,只显示这些部分作为单元格,并允许在那里重新排序.工作正常,但创造的问题比解决的问题多[2].

我在文档中看不到任何内容,例如,在重新排序开始/结束时调用的钩子.或者更确切地说,有结束位但我看不到开头的那个.

建议?


[1]原则上,这允许行放在节标题之前,你必须手动捕获它,看起来很糟糕.

[2]我甚至会在哪里放置这样的控件,特别是如果我已经拥挤拥挤的UI,或者我想保持我的UI最小化?

drag-and-drop uitableview ios swift

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

nuxt start 需要存在 node_modules 才能运行

我有一个nuxt-community/starter-template添加最少的项目。我的package.json看起来像这样

{
  // ...
  "scripts": {
    "dev": "nuxt",
    "build": "nuxt build",
    "docker-image": "nuxt build && docker build -t unijobs-www-temp .",
    "start": "nuxt start",
    "generate": "NODE_ENV=production nuxt generate",
    "lint": "eslint --ext .js,.vue --ignore-path .gitignore .",
    "precommit": "npm run lint"
  },
  "dependencies": {
    "@fortawesome/fontawesome": "^1.1.8",
    "@fortawesome/fontawesome-free-brands": "^5.0.13",
    "@fortawesome/fontawesome-free-regular": "^5.0.13",
    "@fortawesome/fontawesome-free-solid": "^5.0.13",
    "@fortawesome/vue-fontawesome": "0.0.22",
    "nuxt": "^1.0.0",
    "nuxt-fontawesome": "^0.2.0",
    "node-sass": "^4.9.0",
    "sass-loader": "^7.0.2"
  },
  "devDependencies": {
    "babel-eslint": "^8.2.1",
    "eslint": "^4.15.0",
    "eslint-friendly-formatter": "^3.0.0",
    "eslint-loader": "^1.7.1",
    "eslint-plugin-vue": "^4.0.0"
  }
}
Run Code Online (Sandbox Code Playgroud)

本地开发看起来不错,本地化build …

node.js node-modules docker webpack nuxt.js

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

在主机上chown docker卷(可能通过docker-compose)

我有以下示例

version: '2'

services:
  proxy:
    container_name: proxy
    hostname: proxy
    image: nginx
    ports:
      - 80:80
      - 443:443
    volumes:
      - proxy_conf:/etc/nginx
      - proxy_htdocs:/usr/share/nginx/html

volumes:
  proxy_conf: {}
  proxy_htdocs: {}
Run Code Online (Sandbox Code Playgroud)

哪个工作正常.当我运行docker-compose up它时,创建那些命名的卷/var/lib/docker/volumes,一切都很好.但是,从主机,我只能/var/lib/docker以root身份访问,因为它root:root(有意义).我想知道是否有一种方法可以chown将主机的目录更加明智/安全(比如,我用来在主机上做大部分工作的相对无特权的用户),或者我是否只需要chown手动操作它们.我已经开始有许多脚本可以解决其他问题了,所以有一个额外的几行不会有太大的问题,但我真的想保持自编自动化最小化,如果我可以 - 减少愚蠢错误的机会.

顺便说一句,没有:如果我挂载主机目录而不是创建卷,它们会被覆盖,这意味着如果它们开始为空,它们将保持为空,并且我没有从容器内部获得默认配置(或其他任何内容).

额外点:我可以将卷移到更方便的位置吗?说,/home/myuser/myserverstuff/volumes

chown docker docker-compose docker-volume

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

可在Kotlin中序列化

在我的Android应用程序中,我有一个TreeMap我可以愉快地放入Bundle类似的东西

bundle.putSerializable("myHappyKey", myHappyTreeMap);
Run Code Online (Sandbox Code Playgroud)

但现在我将我的应用程序移植到Kotlin,Android Studio抱怨这Serializable!是必需的,但它正在找到一个Map.

我该如何处理?

编辑如果我将地图投射到一个警告,警告似乎就消失了Serializable.这是这样的吗?

编辑2我宣布并初始化myHappyTreeMap

var myHappyTreeMap: Map<Int, Double> = mapOf()
Run Code Online (Sandbox Code Playgroud)

文件说,地图使用初始化mapOf()可序列化.如果文档说的那么......

android kotlin

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

在iOS中使用EPSSampler时,请使用系统通道而不是振铃通道

我正在使用EPSSampler在我的小iOS应用程序中播放一些笔记.除了通过振铃设置而不是系统音量设置控制声音之外,它的效果很好.问题是,如果铃声关闭,我的应用程序没有声音.

我能找到的最接近的是这个问题,但我无法将该解决方案完全转化为我的解决方案,因为我无法将其与EPSSampler的代码相匹配.任何见解?

编辑为了澄清,唯一专门处理音频的代码包含在EPSSampler类中,我的app只是实例,加载AUSampler预设,并调用EPSSampler中的音符播放方法,因此解决方案需要在EPSSampler中更改某些内容而不是在我的应用程序 - 这就是为什么我没有发布任何源代码.

avaudioplayer audiounit ios

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

在UINavigationController中支持纵向和横向视图的最佳实践

我搜索高低,我不确定我出来的是处理这个问题的最佳方式(尽管它似乎是唯一的一个).

根据想要使用muliple笔尖来实现不同的iphone接口方向,我实现了相关的方法,一切似乎都运行良好.不幸的是,我必须处理UINavigationController,每个页面都必须支持纵向和横向模式,并在两种模式下重现相同的功能.这意味着如果用户在某个时刻决定从纵向切换到横向,整个应用程序应该允许他以他选择的模式在页面中来回导航.

显然,缺少的文档是如何处理这个问题.在我的视图中,我有许多带有附加showChild方法的按钮,用于执行导航.一切都适用于纵向模式(据我所知,这是默认模式).方法如下:

- (IBAction)showChild:(UITapGestureRecognizer *)sender {
    UIView *view = [sender view];
    PortraitViewController *nextPortraitViewcontroller = [[PortraitViewController alloc] initWithNibName:@"Portrait" bundle:nil];
    [self.navigationController pushViewController:nextPortraitViewcontroller animated:YES];
}
Run Code Online (Sandbox Code Playgroud)

但是当谈到景观模式时,我会得到喜忧参半的结果.LandscapeViewController类中的showChild:方法完全相同,它构建一个从PortraitViewController开始的视图,并将其推送到导航控制器.这一切看起来都很顺利,但是当我向后导航时,我得到的是前面的PortraitViewController,而不是景观,而且它的子视图都散布在周围,而不是我放在它们的位置.

现在的问题是:因为Apple似乎并不真正关心文档和最佳实践(假设整个机制远非理想,我可以说这来自人机交互设计和编程的背景)是什么correc - Apple这样做的方式?

landscape portrait uitabbarcontroller uinavigationcontroller ios

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

如何更改共享 docker 卷的 umask?

这与“ /sf/ask/2553434551/ ”有关。

我正在尝试设置一堆应该能够访问rwdocroot的 apache-php 容器,以及一个也应该能够访问rw同一目录的sftp 容器。因此,计划是创建一个共享卷,并将其挂载在两个容器中(对于 sftp 容器显然是在不同的地方)。我修改了官方的 php:7-apache 启动脚本,如下所示:

#!/bin/bash
set -e

### > My stuff
chmod g+s /var/www/html
chown -R :2048 /var/www/html
umask
umask 0002
umask
### < My stuff

# Apache gets grumpy about PID files pre-existing
rm -f /var/run/apache2/apache2.pid

exec apache2 -DFOREGROUND
Run Code Online (Sandbox Code Playgroud)

事实上,这两umask行确认夹心umask 0002运行正确。但是,当我bash进入容器并自己测试时,umask返回022,如果我创建任何文件,他们实际上获得了权限644。然后我可以手动umask 0002创建任何具有权限664(和775目录)的新文件。

对于这个用例,两个容器(sftp 和 apache)都可以在共享卷中读写是至关重要的。那么,我该怎么做呢?

apache ftp shared-hosting docker docker-volume

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

无需Homebrew即可在macOS上安装Vapor

我正在尝试启动Swift Vapor项目.按照这里的指南,似乎Homebrew是唯一的选择.我已经拥有MacPorts,并且在许多方面更喜欢自制软件.不幸的是没有Vapor的端口,所以我选择了Vapor人在这里描述的SPM安装.我之前在Kitura取得了成功,所以我想为什么不用Vapor.好吧,当你去建立你的项目时,你得到了

$ swift build

[... build stuff ...]

note: you may be able to install ctls using your system-packager:

    brew install ctls

[... more build stuff ...]

<module-includes>:1:9: note: in file included from <module-includes>:1:
#import "shim.h"
    ^
[... more like that ...]

  /Users/morpheu5/web/vizex/api/.build/checkouts/crypto.git-7980259129511365902/Sources/Crypto/Cipher/Cipher+Method.swift:1:8: error: could not build Objective-C module 'CTLS'
import CTLS
    ^
<unknown>:0: error: build had 1 command failures
error: exit(1):/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift-build-tool -f /Users/morpheu5/web/vizex/api/.build/debug.yaml
Run Code Online (Sandbox Code Playgroud)

显然你真的需要这个ctls包,获得它的唯一方法似乎是通过Homebrew/Tap.

我真的不想要或不需要Homebrew,所以我该如何找到它的底部?我真的很想试试Vapor.

swift vapor

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

如何从该枚举中获取CustomStringConvertible描述?

我有以下枚举

enum Properties: CustomStringConvertible {
    case binaryOperation(BinaryOperationProperties),
    brackets(BracketsProperties),
    chemicalElement(ChemicalElementProperties),
    differential(DifferentialProperties),
    function(FunctionProperties),
    number(NumberProperties),
    particle(ParticleProperties),
    relation(RelationProperties),
    stateSymbol(StateSymbolProperties),
    symbol(SymbolProperties)
}
Run Code Online (Sandbox Code Playgroud)

和所有的结构看起来像这样

struct BinaryOperationProperties: Decodable, CustomStringConvertible {
    let operation: String
    var description: String { return operation }
}
Run Code Online (Sandbox Code Playgroud)

那么如何使该枚举符合CustomStringConvertible?我尝试了一个简单的吸气剂,但显然它会调用自身,而我想改为调用特定的结构。

优点:这样定义的枚举是否有名称?

enums swift

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

FragmentManager在Kotlin中抛出IllegalArgumentException

我有以下方法 Fragment

override fun onActivityCreated(savedInstanceState: Bundle?) {
    super.onActivityCreated(savedInstanceState)

    val fm = childFragmentManager
    var prefsFragment: PrefsFragment? = fm.findFragmentByTag(tableName) as PrefsFragment?
    if (prefsFragment == null) {
        prefsFragment = PrefsFragment()
        val ft = fm.beginTransaction()
        ft.add(R.id.parameters_fragment_container, prefsFragment, tableName)
        ft.commit()
        fm.executePendingTransactions()
    }
}
Run Code Online (Sandbox Code Playgroud)

我不得不说这是Java-> Kotlin自动翻译器对我以前的Java代码所做的事情(除了?我找到PrefsFragmentby标签的行末),所以它可能不完全是犹太人.我正在学习Kotlin.

现在,当我调用时executePendingTransactions(),我的应用程序崩溃抛出java.lang.IllegalArgumentException错误消息"参数指定为非null为null:方法kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull,参数savedInstanceState".现在,是的,savedInstanceState实际上是null,但它与显然抛出异常的调用有什么关系呢?我确保没有其他值/变量为空,所以我相信错误信息......但为什么呢?

编辑这是堆栈跟踪,以及让我做恶梦的源代码

https://gist.github.com/Morpheu5/8ec7e2064f53679405769b43c64f2cb7

E/AndroidRuntime: FATAL EXCEPTION: main
                  Process: net.morpheu5.bleedingscorecalculator, PID: 2685
                  java.lang.IllegalArgumentException: Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull, parameter savedInstanceState
                      at net.morpheu5.bleedingscorecalculator.CalculatorScreen$PrefsFragment.onCreatePreferences(CalculatorScreen.kt:0)
                      at android.support.v7.preference.PreferenceFragmentCompat.onCreate(PreferenceFragmentCompat.java:223)
                      at android.support.v4.app.Fragment.performCreate(Fragment.java:2075)
                      at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1060)
                      at …
Run Code Online (Sandbox Code Playgroud)

android illegalargumentexception kotlin

4
推荐指数
1
解决办法
1609
查看次数