tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
运行几次后我收到错误.
这是事情:我创建了一个teacherArray
包含用于单元格的数据,它肯定包含我需要的东西.
我使用故事板来定制单元格和tableview.我已经检查了单元格的标识符是否已设置,我还为表格视图和标识检查器中的单元格定制了类.
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return teacherArray.count
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = self.tableView.dequeueReusableCellWithIdentifier("SearchCell", forIndexPath:indexPath) as SearchCell
cell.nameLabel.text = teacherArray[indexPath.row].name
cell.schoolLabel.text = teacherArray[indexPath.row].school
cell.experienceLabel.text = teacherArray[indexPath.row].experience
cell.courseLabel.text = teacherArray[indexPath.row].course
println(indexPath.row)
println(cell)
return cell
}
Run Code Online (Sandbox Code Playgroud)
我已经跟踪了这个方法,它是在这个控制台输出之后:
6
PAL.SearchCell: 0x7bf32310; baseClass = UITableViewCell; frame = (0 450; …
Run Code Online (Sandbox Code Playgroud) 我遇到了一个与Auto Layout相遇的问题.我有一个UIView
设置了约束因此它对于每个大小类都处于相同的位置.我试图让我的视频完全适合这个UIView
videoViewBox
.我只在iPhone 6上工作,但是如果我切换到iPhone 4S/5,视频就不再对齐了.
这是代码:
var moviePlayer: MPMoviePlayerController!
@IBOutlet var videoViewBox: UIView!
override func viewDidLoad() {
super.viewDidLoad()
let path = NSBundle.mainBundle().pathForResource("tutorial", ofType: "mov")
let url = NSURL.fileURLWithPath(path!)
moviePlayer = MPMoviePlayerController(contentURL: url)
moviePlayer.view.frame = CGRect(x: 10, y: 50, width: 255, height: 400)
videoViewBox.addSubview(moviePlayer.view)
moviePlayer.fullscreen = true
moviePlayer.controlStyle = MPMovieControlStyle.None
}
Run Code Online (Sandbox Code Playgroud)
我尝试设置的值CGRect
与值动态videoViewBox.frame.origin.x
和videoViewBox.frame.origin.y
,但它也不对齐.
我该怎么做呢?谢谢你的帮助!
我在班上有这些实例变量:
private int x1 = 0;
private int y1 = 0;
private int x2 = 0;
private int y2 = 0;
private int height = y2 - y1;
private int width = x2 - x1;
Run Code Online (Sandbox Code Playgroud)
在我的程序中,我使用改变x
s和y
s的方法,所以我期望height
并width
改变.但是,他们没有.有人可以解释为什么会这样,以及如何在更改x
s和y
s 的方法调用之后使其值"更新" ?
我写了一个递归mergeSort
函数:
func mergeSort<T: Comparable>(inout array: [T]) {
if array.count <= 1 {
return
}
var leftSlice = [T](array[0..<array.count / 2])
var rightSlice = [T](array[array.count / 2...array.endIndex - 1])
mergeSort(&leftSlice)
mergeSort(&rightSlice)
array = merge(leftSlice, rightSlice)
}
func merge<T: Comparable>(var left: [T], var right: [T]) -> [T] {
var mergedValues = [T]()
while !left.isEmpty && !right.isEmpty {
mergedValues.append(left.first! < right.first! ? left.removeAtIndex(0) : right.removeAtIndex(0))
}
if !left.isEmpty {
mergedValues += left
} else if !right.isEmpty {
mergedValues += right
} …
Run Code Online (Sandbox Code Playgroud) 我有一个函数编码为:
func deleteEnclosedString(s: String, startString s1:String, endString s2: String) -> String {
}
Run Code Online (Sandbox Code Playgroud)
我想创建一个class
子类,String
在其中我定义一个函数并使用如下:
var myString = "A [typical] string"
myString.deleteEnclosedString(startString: "[", endString: "]")
Run Code Online (Sandbox Code Playgroud) 我有一个UITableView
包含标签的自定义单元格.我想要的是能够在选择行时将此标签的内容传递给第二个视图控制器.
我在没有自定义单元格的表格上运行的代码很好:
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("reusableCell", forIndexPath: indexPath) as! CustomCell
//labelDisplayLedQty is the name of the custom label
cell.labelDisplayLedQty.text = inputLedQty.text
return cell
}
Run Code Online (Sandbox Code Playgroud)
这是我在该prepareForSegue
方法中的代码.正如我所说,如果我将它与不包含自定义单元格的表一起使用,此代码可以正常工作.
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
let rowIndex: NSIndexPath = tableList.indexPathForSelectedRow!
let selectedRow: UITableViewCell = tableList.cellForRowAtIndexPath(rowIndex)!
let contentFromSelectedRow: String = selectedRow.textLabel!.text!
if let secondVC = segue.destinationViewController as? DriverDetailsViewController where
segue.identifier == "segueDriverDetails" {
secondVC.messageContentFromMainController = contentFromSelectedRow + " This message is …
Run Code Online (Sandbox Code Playgroud) 我目前正在研究图形数据类型,在这种情况下,我思考了很多有关身份和平等的语义问题。
我现在的情况如下。我有一个Vertex
类型:
final class Vertex<T>: Hashable {
static func ==(lhs: Vertex, rhs: Vertex) -> Bool {
return lhs === rhs
}
var value: T
var hashValue: Int {
return ObjectIdentifier(self).hashValue
}
}
Run Code Online (Sandbox Code Playgroud)
如您所见,平等是由身份决定的。我这样做是出于图数据类型特定的原因,但它基本上归结为这样一个事实:顶点应该通过其标识来查看,因此只有当它们是相同(相同)顶点时才被视为相等。
现在哈希值也由身份确定(使用ObjectIdentifier
)。这似乎是获取哈希值的最简单方法,并且似乎也与这种类型的相等概念很好地一致。
但这让我思考......
通过属性(如果符合)来确定哈希值在语义上是否“不正确”(或者不合逻辑,value
如果你T
愿意的话Hashable
)。
在这种情况下,两个Vertex
s 可以一致地具有相等的哈希值(不仅仅是程序的一次调用),而不被视为相等。这似乎不对。
那么反过来:说实例相等应该意味着它们的哈希值相等是否明智?
如果我在任何地方(Xcode Simulator、Playground 等)使用以下Swift Charts ,它会挂起或崩溃。 Chart
一旦我删除chartXVisibleDomain
修改器,一切都会正常。还有其他人遇到同样的问题和/或知道如何解决它吗?我使用的是 Xcode 版本 15.0 (15A240d)。
import SwiftUI
import Charts
struct ContentView: View {
let data: [(day: Date, value: Int)] = [
(Calendar.current.date(byAdding: .day, value: 0, to: .now)!, 1),
(Calendar.current.date(byAdding: .day, value: -1, to: .now)!, 2),
(Calendar.current.date(byAdding: .day, value: -3, to: .now)!, 3),
(Calendar.current.date(byAdding: .day, value: -10, to: .now)!, 4),
(Calendar.current.date(byAdding: .day, value: -20, to: .now)!, 5)
]
var body: some View {
Chart(data, id: \.day) { (day, value) in
BarMark(
x: …
Run Code Online (Sandbox Code Playgroud) 我搜索了各种网站以找到解决这个问题的方法,并且没有找到一个真正适用于我的网站.
我所拥有的是一个自定义框架,它在Xcode的Derived Data
文件夹中显示如下:
如您所见,它是一个universal
框架.根据我的理解,这意味着它可以用于实际的iOS设备 和 模拟器.
为了生成universal
框架,我从一些教程中获得了以下运行脚本,我不记得了:
#CONFIG=${CONFIGURATION}
CONFIG=Release
# Step 1.
UNIVERSAL_OUTPUTFOLDER=${BUILD_DIR}/${CONFIG}-universal
mkdir -p "${UNIVERSAL_OUTPUTFOLDER}"
# Step 2.
xcodebuild -target "${PROJECT_NAME}" ONLY_ACTIVE_ARCH=NO -configuration ${CONFIG} -sdk iphoneos BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="$BUILD_ROOT" clean build
xcodebuild -target "${PROJECT_NAME}" ONLY_ACTIVE_ARCH=NO -configuration ${CONFIG} -sdk iphonesimulator -arch x86_64 -arch i386 BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="$BUILD_ROOT" clean build
# Step 3.
cp -R "${BUILD_DIR}/${CONFIG}-iphoneos/${PROJECT_NAME}.framework" "${UNIVERSAL_OUTPUTFOLDER}/"
cp -R "${BUILD_DIR}/${CONFIG}-iphonesimulator/${PROJECT_NAME}.framework/Modules/${PROJECT_NAME}.swiftmodule/}" "${UNIVERSAL_OUTPUTFOLDER}/${PROJECT_NAME}.framework/Modules/${PROJECT_NAME}.swiftmodule"
# Step 4.
lipo -create -output "${UNIVERSAL_OUTPUTFOLDER}/${PROJECT_NAME}.framework/${PROJECT_NAME}" "${BUILD_DIR}/${CONFIG}-iphonesimulator/${PROJECT_NAME}.framework/${PROJECT_NAME}" "${BUILD_DIR}/${CONFIG}-iphoneos/${PROJECT_NAME}.framework/${PROJECT_NAME}"
Run Code Online (Sandbox Code Playgroud)
所以现在我有LanguageKit.framework
.
我想在单个视图应用程序中使用此框架.
我如何在项目中包含框架?
我有一些需要计算NSDate
s 的事件。例如,我试图在下周一上午 8:00 到达。所以我尝试了一些东西,但没有任何效果:
let nextMonday = NSCalendar.currentCalendar().dateBySettingUnit(NSCalendarUnit.Weekday, value: 2, ofDate: startDate, options: NSCalendarOptions.MatchNextTime)
let nextMondayEight = NSCalendar.currentCalendar().dateBySettingUnit(NSCalendarUnit.Hour, value: 8, ofDate: nextMonday!, options: NSCalendarOptions.MatchNextTime)
Run Code Online (Sandbox Code Playgroud)
我得到:
2016-04-12 05:00:00 +0000
那是星期二的 8:00(时差是我当地时间 GMT -3)。
let unitFlags: NSCalendarUnit = [.Day, .Month, .Year]
let comp = NSCalendar.currentCalendar().components(unitFlags, fromDate: NSDate())
comp.timeZone = NSTimeZone.localTimeZone()
comp.weekday = 1
comp.hour = 8
comp.minute = 0
comp.second = 0
let compDate = NSCalendar.currentCalendar().dateFromComponents(comp)
print("time: \(compDate!)")
Run Code Online (Sandbox Code Playgroud)
我得到:
2016-04-11 05:00:00 +0000
那是今天的 8:00 而不是下周一的 8:00。
有什么建议?谢谢