我知道,当我实现tableView:willBeginEditingRowAtIndexPath:并且tableView:didEndEditingRowAtIndexPath:,刷卡到删除不会调用setEditing:animated:我UITableViewController(作为代表UITableView).
我有一个自定义UITableViewCell实现,在进入编辑模式时执行一些UI重新排列.我想要聪明并setEditing:animated:在表视图单元实现本身实现这些更改(这显然是有意义的).
但是,当滑动删除时,我仍然会setEditing:animated:在我的表视图单元格实现中调用.我没有参数告诉我,我正在刷卡.调用堆栈也没有显示我自己的方法,这些方法可以让我有机会做某事.它显示了setEditing:animated被称为UITableView.唯一显而易见的是,它没有在委托中调用(在这种情况下我的控制器).
当然,我可以在单元格中设置一个标志tableView:willBeginEditingRowAtIndexPath:,告诉它下一个setEditing调用是刷卡,但这听起来不是好风格.
编辑:它甚至不起作用,因为它不能保证tableView:didEndEditingRowAtIndexPath:被调用,所以我不能将标志设置回来.
任何想法如何优雅地解决这个问题?
在表视图中删除行时,我想显示一个在某些情况下要求确认的操作表.当操作表单以"是"(破坏性操作)回答时,我删除了表格行,一切都很好.但是当按下取消时,我仍然看到处于按下状态的删除按钮.
我在tableView:commitEditingStyle删除时所做的是:
BlockBasedActionSheet *askSheet =
[[BlockBasedActionSheet alloc]
initWithTitle:@"Delete entry?"
cancelButtonTitle:@"No"
destructiveButtonTitle:@"Yes, delete child also records"
cancelAction:^{
UITableViewCell *cell = [self tableView:tableView cellForRowAtIndexPath:indexPath];
if (cell.showingDeleteConfirmation) {
cell.editing = NO;
cell.editingAccessoryView = nil;
cell.editing = YES;
}
}
destructiveAction:deleteBlock];
[askSheet showInView:self.view];
[askSheet release];
Run Code Online (Sandbox Code Playgroud)
同样奇怪的是,单元格的属性showingDeleteConfirmation是NO,但删除按钮仍然可见.
我正在使用自制的基于块的操作表实现.也许存在错误,尽管我似乎在取消块中得到了正确的单元格.
那么,如何将"删除"按钮状态重置为"未按下"并将其删除,并将圆形删除按钮恢复为水平,就像我点击屏幕上的某个位置时一样?
助手班BlockBasedActionSheet.h:
@interface BlockBasedActionSheet : UIActionSheet<UIActionSheetDelegate> {
}
@property (copy) void (^cancelBlock)();
@property (copy) void (^destructiveBlock)();
- (id)initWithTitle:(NSString *)title cancelButtonTitle:(NSString *)cancelButtonTitle destructiveButtonTitle:(NSString *)destructiveButtonTitle cancelAction:(void (^)())cancelBlock destructiveAction:(void (^)())destructiveBlock;
@end
Run Code Online (Sandbox Code Playgroud)
实施文件 …
在一个支持bean中,我定义了一个Map<Integer,String>属性.当试图从xhtml文件中的EL访问地图时,我得不到任何回报.
<h:outputLabel value="#{bean.myMap[0]}">
Run Code Online (Sandbox Code Playgroud)
不返回键0的值.使用String键可以工作.
它适用于a List<String>,但我希望Map有一些稀疏数组(并非所有索引都有值)
有了UILabel任何字体,我怎么能知道它是否已经是粗体?或者我怎样才能使它变得大胆?在CSS中,我有一个font-weight属性.我想有类似的东西.
到目前为止我发现的一切都是你必须设置正确的字体名称.但是,这是不可靠的.大胆的版本Cochin是Cochin-Bold,但大胆的版本ArialMT是不是ArialMT-Bold,但是Arial-BoldMT,因此它显然不足以追加-Bold.(自定义字体的粗体版本也可能有完全不同的名称).
我能做的是找到我给定字体系列的所有字体.
__block UIFont *font = myLabel.font;
[[UIFont fontNamesForFamilyName:font.familyName] enumerateObjectsUsingBlock:^(NSString *fontName, NSUInteger idx, BOOL *stop) {
if ([fontName rangeOfString:@"bold" options:NSCaseInsensitiveSearch].location != NSNotFound) {
font = [UIFont fontWithName:fontName size:font.pointSize];
*stop = YES;
}
}];
myLabel.font = font;
Run Code Online (Sandbox Code Playgroud)
但这并不可靠.我可以很容易地得到一个BoldItalic版本.我可以改进我的检查以避免这种情况,但这不是一个很好的解决方案.
也许CoreText可以在这里提供帮助?
我想做的事:使用带有jQuery Soap插件的jQuery(由Remy Blom提供)从JavaScript调用跨域SOAP-Service.(也就是说,我$.soap();用JavaScript 调用)
我做了什么:服务器端的CORS设置(CXF)正在工作(使用org.eclipse.jetty.servlets.CrossOriginFilter),所以答案中出现以下内容:
Access-Control-Allow-Head... X-Requested-With,Content-Type,Accept,Origin
Access-Control-Allow-Meth... GET,POST,OPTIONS,HEAD
Access-Control-Allow-Orig... http://localhost:8082
Content-Type application/soap+xml;charset=UTF-8
Run Code Online (Sandbox Code Playgroud)
缺少的内容:Firefox和Chrome OPTIONS在POST请求SOAP调用之前发送预检请求.显然,SOAP不允许使用OPTIONS动词.
它不适用于SoapUI(5.0)以及CXF(2.7.7).甚至在org.apache.cxf.binding.soap.interceptor.ReadHeadersInterceptor第130ff行的评论中都说明了这一点:
/*
* Reject OPTIONS, and any other noise that is not allowed in SOAP.
*/
Run Code Online (Sandbox Code Playgroud)
所以,我的问题是:如何修改我的SOAP服务实现(使用CXF),以便OPTIONS请求成功返回?