Objective-c中的"实例变量"和"属性"之间有区别吗?
我对此不太确定.我认为"属性"是一个具有存取方法的实例变量,但我可能认为错了.
在游戏中心的UITableViews中有这个很酷的功能,以及它们顶部的搜索栏.与将搜索栏放在表标题视图中的应用程序(因此它计为标准表格单元格)不同,它似乎是用螺栓固定到它上面的父导航栏.因此,当滚动表格时,搜索栏确实会移动,但如果您在表格的边界上滚动,搜索栏将永远不会停止触摸导航栏.
有谁知道这可能是怎么做的?我想知道Apple是否可能将搜索栏和表放在父滚动视图中,但我想知道它是否可能比这更简单.
这个问题发生在OS X El Capitan 10.11 beta 6的最后更新之后,Xcode 7 beta 4用.xcdatamodel文件中的错误编译我的项目说:
cdtool cannot compile
.我试图在OS X Yosemite和Xcode 7.0 beta 4上编译相同的项目,我总是得到相同的编译错误.有关如何清除此问题的任何想法?我很感激任何帮助.
我有一个场景,我正试图在我的应用程序中实现,UIScrollView
一旦你开始强迫它滚动超过其正常的内容范围,我想让一个表现更"僵硬".
我的意思是,当你在滚动视图的顶部或底部时,如果你点击并继续拖动,你通常可以获得滚动视图以保持滚动超出其范围,但它逐渐建立阻力,直到它通常停在视图中间的一半左右.抬起手指时,它会快速回到滚动区域的边界.
我想要实现的是,我想让"越界"的拖拽效果更加沉重,所以不是用户拖动滚动视图而是"触底"中途通过滚动视图边界,它完全停止在其滚动边界的20%左右.
我一直在尝试重写滚动视图contentOffset
里面scrollViewDidScroll:
的委托方法,但似乎并没有工作,因为重新设置contentOffset在那里似乎搞砸了同样的方法,进一步委托调用.
我的下一个想法是监视UIPanGestureRecognizer
与scrollview相关联的内容,并尝试UIScrollView
根据其中的事件确定正确的contentOffset.话虽这么说,我认为可能会开始走上黑客的一面,所以我想我会在这里问任何其他我没想过的解决方案,然后再尝试一些可能会很混乱的东西.
谢谢!
我试图UIRefreshControl
在表视图上使用新的searchController
API navigationItem
.
现在,当我设置hidesSearchBarWhenScrolling
"下拉刷新"动画不再显示时,刷新控件只是在某一点弹出.
它似乎是UIKit中的一个错误(与每年相同的程序).有没有人找到这个解决方案?
要重现此问题,请将其添加到全新的iOS 11"主/详细信息"示例项目中:
- (void)viewDidLoad {
// [setup code here]
self.refreshControl = [UIRefreshControl new];
self.navigationItem.searchController = [[UISearchController alloc] initWithSearchResultsController:nil];
self.navigationItem.hidesSearchBarWhenScrolling = NO; // <-- setting this causes jumpy UI
}
Run Code Online (Sandbox Code Playgroud) 我刚刚创建了一个新的 Objective-C 库,并且正在尝试添加对 Swift Package Manager 的支持。
图书馆本身非常基础。它具有以下源结构。
ProjectName/ProjectName.h
ProjectName/ProjectName.m
ProjectName/Private/ProjectNameInternal.h
ProjectName/Private/ProjectNameInternal.m
Run Code Online (Sandbox Code Playgroud)
公共源文件导入私有标头,私有源文件导入公共标头。当我做了一个基本的Package.swift
并尝试构建它时,它给了我一个错误:私有标头无法看到公共标头。
有没有一种特殊的方式我应该声明所有这些 Objective-C 标头?
(如果有帮助的话,这是有问题的图书馆。)
当您启用allowsMultipleSelectionDuringEditing
aUITableView
然后在其上进入编辑模式时,每行将在左侧显示一个浅灰色圆圈。点击一行后,圆圈将替换为当前设置为表格视图的色调颜色的勾号图标。
我想知道,有没有办法覆盖这两个图标的色调并手动控制它们?我发现如果你设置了cell.tintColor
,你可以在选中时覆盖图标的色调(但不是空心圆图形),但我宁愿能够改变这个图标的色调。
我越来越觉得这样做的唯一方法是手动破解内部子视图,但我希望有人可能找到了我错过的方法。
我在我的 iOS 应用程序中使用Realm和 Swift 3。我有以下代码
//Find all records for the day
func findForToday<T: Object>() -> [T] {
let predicate = NSPredicate(format: "date >= %@ and date <= %@", DateUtil.dayStart(), DateUtil.dayEnd())
return getRealm().objects(T.self).filter(predicate).map { $0 }
}
Run Code Online (Sandbox Code Playgroud)
其中,T
在这方面是一个看起来像我的境界模型类
class MyModel : Object {
dynamic var id = 0
dynamic var date = NSDate()
override class func primaryKey() -> String? {
return "id"
}
}
Run Code Online (Sandbox Code Playgroud)
我在运行时遇到异常说
Terminating app due to uncaught exception 'RLMException', reason:
'Object type 'RealmSwiftObject' is …
Run Code Online (Sandbox Code Playgroud) 我最近有兴趣为OS X编写一些系统服务,但由于我没有应用程序来宣传服务,我必须求助于编写独立的系统服务.Apple关于系统服务的文档虽然简洁,但其关于独立服务的文档并不存在.
我有迄今是从捆绑包构建的Xcode项目,与两个来源HashifyService.h
和HashifyService.m
.这是我的测试代码:
- (void) doServiceWork:(NSPasteboard *)pboard
userData:(NSString *)userData
error:(NSString **)error {
NSLog(@"Actually in the service now");
NSString *pboardString;
NSArray *types;
NSLog(@"do test magic service! (pboard: %@, types: %@)", pboard, [pboard types]);
NSString* outputString = @"It Worked";
types = [NSArray arrayWithObject:NSStringPboardType];
[pboard declareTypes:types owner:nil];
[pboard setString:outputString forType:NSStringPboardType];
[outputString release];
return;
}
Run Code Online (Sandbox Code Playgroud)
这是NSServices
我的条目Info.plist
:
<dict>
<key>NSMenuItem</key>
<dict>
<key>Menu item title</key>
<string>HashifyTest</string>
</dict>
<key>NSMessage</key>
<string>doServiceWork</string>
<key>NSPortName</key>
<string>HashifyService</string>
<key>NSReturnTypes</key>
<array>
<string>NSStringPboardType</string>
</array>
<key>NSSendTypes</key>
<array>
<string>NSStringPboardType</string>
</array> …
Run Code Online (Sandbox Code Playgroud) 我在iPhone Mail.app和SMS.app应用程序中注意到了这个功能,但我不确定如何自己实现它.
在标准的UITableView中,当用户点击"编辑"按钮并且删除按钮移动到位时,当内容视图向右滑动时,它们会执行快速淡入淡出过渡,并将其替换为更薄的版本(对于帐户)删除按钮占用的空间).
我最初认为这是通过在启用编辑模式时调用以下方法来完成的:
[self.tableView reloadRowsAtIndexPaths: [tableView indexPathsForVisibleRows] withRowAnimation: UITableViewRowAnimationFade];
Run Code Online (Sandbox Code Playgroud)
然而,这可能是正确的,因为它也淡化了删除按钮本身的过渡以及单元格所具有的任何附件视图(足以说明,它看起来很奇怪).
我想知道,当表格进入编辑模式时,如何强制内容视图重绘自身,然后将新绘制的版本淡化为旧版本?
更新:感谢Caleb的回答,这是最后一段代码,让我能够得到我以后的内容:
我的最终解决方案是继承UITableViewCell,然后将以下代码应用于setEditing访问器:
-(void) setEditing: (BOOL)editing animated: (BOOL)animated
{
[super setEditing: editing animated: animated];
CATransition *animation = [CATransition animation];
animation.duration = 0.2f;
animation.type = kCATransitionFade;
//redraw the subviews (and animate)
for( UIView *subview in self.contentView.subviews )
{
[subview.layer addAnimation: animation forKey: @"editingFade"];
[subview setNeedsDisplay];
}
}
Run Code Online (Sandbox Code Playgroud)
我可能也应该澄清一下.由于性能至关重要,我的单元格内容视图中的所有内容都是通过CG(即drawRect :)呈现的,因此我无法控制在那里绘制的任何元素.
我正在尝试设置该属性的值,因此如果该帐户进入借方,则需要收取10的费用.我尝试过多种方式对属性CurrentBalance进行编码,包括借记(10),值-10和账户余额-10,但这些方法都不起作用.代码编译但不收取费用.我究竟做错了什么?
public void Credit(decimal amount)
{
accountBalance += amount; //add to balance
}
public void Debit(decimal amount)
{
accountBalance -= amount; //subtract amount
}
public decimal CurrentBalance
{
get
{
return accountBalance;
}
set
{
if (value < 0) // if less than zero debit account by 10
{
value = accountBalance -10; // charge account
}
accountBalance = value;
}
}
Run Code Online (Sandbox Code Playgroud) ios ×6
uitableview ×4
objective-c ×3
swift ×2
uikit ×2
uiscrollview ×2
xcode ×2
c# ×1
cocoa ×1
cocoa-touch ×1
core-data ×1
game-center ×1
if-statement ×1
ios11 ×1
ios7 ×1
ipad ×1
iphone ×1
macos ×1
properties ×1
realm ×1
set ×1
uisearchbar ×1
uiview ×1