我正在尝试捕捉我的点击事件MKMapView,这样我就可以MKPinAnnotation在用户点击的点上删除.基本上我有一个覆盖的地图MKOverlayViews(显示建筑物的叠加层),我想通过删除MKPinAnnotaion并在标注中显示更多信息来为用户提供有关该叠加的更多信息.谢谢.
mkpinannotationview mkmapview ios4 mkoverlay uitapgesturerecognizer
我是否需要[weak self]在RXSwift subscribeNext闭包内使用?
我有代码:
searchController.searchBar.rx_text.throttle(0.2, scheduler: MainScheduler.instance).subscribeNext { searchText in
self.viewModel.searchForLocation(searchText)
}.addDisposableTo(DisposelBag.sharedDisposelBag.disposeBag)
Run Code Online (Sandbox Code Playgroud)
我是否需要修改它以便[weak self]在闭包开始时有一个捕获列表?像这样:
searchController.searchBar.rx_text.throttle(0.2, scheduler: MainScheduler.instance).subscribeNext { [weak self] searchText in
self?.viewModel.searchForLocation(searchText)
}.addDisposableTo(DisposelBag.sharedDisposelBag.disposeBag)
Run Code Online (Sandbox Code Playgroud) 假设我有以下枚举值
enum Language
{
CSharp= 0,
Java = 1,
VB = 2
}
Run Code Online (Sandbox Code Playgroud)
我想将它们转换为值列表(即) { CSharp,Java,VB}.
如何将它们转换为值列表?
可能重复:
创建将T限制为枚举的通用方法
我们有什么理由不能在C#中做到这一点吗?而且,如果可能的话,我该怎么做类似的事情!
我想要的是 :
public class<T> ATag where T : enum {
[Some code ..]
}
public class<T> classBase where T : enum {
public IDictionary<T, string> tags { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
所以,当它到了调用它的时候,我只能得到一个我的枚举值.
public class AClassUsingTag : classBase<PossibleTags> {
public void AMethod(){
this.tags.Add(PossibleTags.Tag1, "Hello World!");
this.tags.Add(PossibleTags.Tag2, "Hello Android!");
}
}
public enum PossibleTags {
Tag1, Tag2, Tag3
}
Run Code Online (Sandbox Code Playgroud)
错误信息 : "Constraint cannot be special class 'System.Enum'"
谢谢!
如何在iOS中使用平移手势平滑地修改约束变化?
我正在尝试开发一个屏幕,其中一个视图位于屏幕的底部.我已经为该视图添加了平移手势.在拖动该视图时,我想要更改该视图的顶部约束.平移手势仅允许在垂直和向下方向.我添加了一些拖动视图的限制.它工作但不顺利.如何使用平移手势平滑地修改约束变化?这是我的代码.
- (void)handleGesture:(UIPanGestureRecognizer *)sender
{
CGPoint velocity = [sender velocityInView:_locationContainer];
[sender setTranslation:CGPointMake(0, 0) inView:self.view];
if (fabs(velocity.y) > fabs(velocity.x)) {
NSLog(@"velocity y %f ",velocity.y * 0.13);
if(velocity.y < 0 && (self.locationDetailsTop.constant > minimumTop) )
{
NSLog(@"gesture moving Up");
self.locationDetailsTop.constant = self.locationDetailsTop.constant - fabs(velocity.y * 0.1);
}
else if (self.locationDetailsTop.constant < firstTop)
{
NSLog(@"gesture moving Bottom");
self.locationDetailsTop.constant = self.locationDetailsTop.constant + fabs(velocity.y * 0.1);
}
[self.view layoutIfNeeded];
[UIView animateWithDuration:0.1 animations:^{
[self.mapView setFrame:CGRectMake(0, 0, self.view.frame.size.width, self.locationContainer.frame.origin.y)];
}];
}
}
Run Code Online (Sandbox Code Playgroud)
这是示例图像,我的屏幕与此类似,但在我的屏幕上,有一个地图视图而不是日历视图
objective-c ios uipangesturerecognizer autolayout nslayoutconstraint
我有一些自定义创建的UIViews,它们使用.xib文件进行布局,并使用支持类进行额外设置.我使用alloc/init创建这些类,并在我的自定义init方法中调用loadNibNamed,但这样做会导致内存泄漏.有人指出alloc部分实际上创建了一个泄漏的自我对象,所以我调整了我的init方法:
- (id)init
{
[self autorelease];
self = [[[[NSBundle mainBundle] loadNibNamed:@"AssignmentView" owner:nil options:nil] lastObject] retain];
[self setupBranding];
UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapDetected:)];
[self addGestureRecognizer:tapRecognizer];
[tapRecognizer release];
return self;
}
Run Code Online (Sandbox Code Playgroud)
但是,现在当我运行分析代码时,我得到这个警告"返回'自我',而它没有设置为'[(超级或自我)初始化...]"的结果.所以我的问题是使用支持类进行自定义UIViews的正确方法是什么?
既然有人问我上面的代码是这样的:
AssignmentView * assignmentView = [[AssignmentView alloc] init];
[self.view addSubview:assignmentView];
Run Code Online (Sandbox Code Playgroud) 我从服务器提取XML提要,提要包含火车站及其纬度和经度位置.
我设法创建了一个NSArray完整的NSDictionary对象,每个对象对应一个工作站.
在字典中有一个纬度键和经度键.我还有一个CLLocation设备位置的对象.
我知道如何计算设备和每个电台之间的距离,但距离不是字典的一部分.我想按距离设备的顺序对数组进行排序.
我该怎么办?不知道从哪里开始,谷歌或我的书对我没有多大帮助!任何帮助深表感谢.
在Basic Operators一节中,Swift编程语言指南指出++是一个有效的运算符:
"更复杂的例子包括逻辑AND运算符&&(如在输入DoorCode &&传递瑞典扫描中)和增量运算符++ i,它是将i的值增加1的快捷方式."摘录自:Apple Inc."Swift编程语言."iBooks. https://itun.es/gb/jEUH0.l
但是,在游乐场尝试时:
class Levels {
var data = [
[
"nodesNum" : 20,
"lastLevel" : false
],
[
"nodesNum" : 16,
"lastLevel" : false
],
[
"nodesNum" : 13,
"lastLevel" : false
],
[
"nodesNum" : 10,
"lastLevel" : false
],
[
"nodesNum" : 8,
"lastLevel" : true
]
]
}
var levels: Levels!
var availableNodesNum: Int!
var currentLevelData: NSDictionary!
var levelNum:Int = 2
levels = Levels()
currentLevelData = levels.data[levelNum]
availableNodesNum = Int(currentLevelData["nodesNum"]! as! …Run Code Online (Sandbox Code Playgroud) 在切换iOS textField isSecureTenxtEntry时.
我的代码是这样的
textField?.isSecureTextEntry = !textField.isSecureTextEntry
Run Code Online (Sandbox Code Playgroud)
设备是iPhone 6.