怎么让NSTableView凤凰知音 添加受让人好多项之后总是显示最后一行

下次自动登录
现在的位置:
& 综合 & 正文
NSTableView及其dataSource
表格试图用于显示列表数据,NstableView有一个helper的对象叫做datasouce 表格试图希望为数据源定义一些方法,一般来讲,“数据源必须遵循NStableDatasouce的非正式协议。就是说数据源必须实现以下的两个方法。number of rows
datasouce 回应将要显示的数据行。
在实现委托时常见的错误
(1)拼错方法的名字:该方法不会被调用,开发者也不会从编译器获得任何错误和警告,避免这个问题的最好方法是从文档或者头文件中复制和粘贴方法的声明。
(2)忘记设施delegate outlet. 如果犯了这种错误,不会从编译器获得任何错误或者警告信息。
委托是怎样工作的。
委托对象没有必要实现所有的方法,但是,假设对像实现了一个委托方法,那它就应该被调用。在很多的语言中,这是不可能。拿在oc中是怎么实现的。
NSObject有如下的方法
-(bool)respondsToSelector:(sel)aSelector
因为每个对象都继承自NSObject(直接或者间接)那么,每个对象都应该有这个方法,假如对象有一个叫aSelector的方法,那么它返回yes,注意aSelector是SEl类型,而不是NSstring类型
设想自己是一个必须编写nstableview的工程师,正在编写一段代码。实现用户从表格试图的一行更改为选择宁一行,那么,你可能会提示自己“我应该检查一下委托对象”为了完成这一项的功能。。代码如下
//修改row“rowINdex”
if([delegate respondtoselector:@selector(tableview:should selectRow)]){
ok=[delegate tableview:self should selectRow:rowindex];
....actually
注意,,只有在委托对象实现方法时才发送的消息。假如委托对象并没有发送消息。就会产生默认的动作(事实上,respondsToSelector:)的结果一般由对象使用delegate outlet缓存,这使得代码执行相对较快
方法写好后,注意在代码中通知该方法的存在。
假如要看看检查的委托方法存在与否过程。可在委托对象中重载respondToSelector
-(bool)respondsToSelector:(sel)aselector{
NSString *methodName =NSStringFrom(aselector);
NSLog(@"respondsToSelector:%@",methodName);
return[super respondsToSelector:aSelector];
&&&&推荐文章:
【上篇】【下篇】Pages: 1/3
主题 : Mac开发,我该如何实现一个固定前三列的NSTableView呢?
级别: 新手上路
UID: 340996
可可豆: 24 CB
威望: 27 点
在线时间: 552(时)
发自: Web Page
来源于&&分类
Mac开发,我该如何实现一个固定前三列的NSTableView呢?&&&
Mac开发,我该如何实现一个固定前三列的NSTableView呢?列表很宽,可以滚动除前三列的所有列,已经Google过了,基本没有什么可以参考的(mac开发真的是后妈生的,资料太少了),目前为止,我可以想到的可行方案是使用两个NSTableView联动实现这个效果,不知道各位大触有没有更好的方案,请指点一下,不盛感激!&&[ 此帖被tzhan在 11:09重新编辑 ]
级别: 精灵王
发帖: 1232
可可豆: 5298 CB
威望: 5293 点
在线时间: 2914(时)
发自: Web Page
NSTableView的Table Column属性有width和Constrains Minimum,Constrains Maximum。如果想固定前三列,将前三列的上述3个值设置为相同的数字就可以的。NSTableView本身并不限制表宽度,自带滚动条,每列默认属性也都是可调整的,应该可以满足你的需要吧。&供参考。
级别: 新手上路
UID: 340996
可可豆: 24 CB
威望: 27 点
在线时间: 552(时)
发自: Web Page
回 1楼(die_hard) 的帖子
朋友,抱歉,我并没有理解你的意思,在NSTableColumn中并没有Constrains Minimum,Constrains Maximum属性。本身NSTableView并不能滚动,必须放在NSScrollView中才可以滚动,这就导致调整tableView的属性并不能影响滚动,不知道是不是我理解错了,希望你能指点一下,这个暂时我真的没有什么好的实现方案
级别: 精灵王
发帖: 1232
可可豆: 5298 CB
威望: 5293 点
在线时间: 2914(时)
发自: Web Page
Re:回 1楼(die_hard) 的帖子
引用 引用第2楼tzhan于 10:37发表的 回 1楼(die_hard) 的帖子 :&朋友,抱歉,我并没有理解你的意思,在NSTableColumn中并没有Constrains Minimum,Constrains Maximum属性。本身NSTableView并不能滚动,必须放在NSScrollView中才可以滚动,这就导致调整tableView的属性并不能影响滚动,不知道是不是我理解错了,希望你能指点一下,这个暂时我真的没有什么好的实现方案 &&&你是不是不用ib的,在xib中可以设置NSTableColumn中的Constrains Minimum,Constrains Maximum属性,怎么会没有呢?&滚动是嵌套的,但这不影响吧,假如你的表有100列,没有自动滚动,怎么看到后面的列呢?&不用ib的话,我就不知道了,一直用ib设置表属性。[ 此帖被die_hard在 11:21重新编辑 ]
级别: 精灵王
发帖: 1232
可可豆: 5298 CB
威望: 5293 点
在线时间: 2914(时)
发自: Web Page
前3列设置固定宽度,第4列是默认的& & & & &&&&&&
级别: 精灵王
发帖: 1232
可可豆: 5298 CB
威望: 5293 点
在线时间: 2914(时)
发自: Web Page
自带滚动条的截图,共10列,运行后只能看到前几列,后面的列,通过滚动条查看。&不知道是不是你需要的滚动条?& & &&
级别: 新手上路
UID: 340996
可可豆: 24 CB
威望: 27 点
在线时间: 552(时)
发自: Web Page
回 5楼(die_hard) 的帖子
我是用的纯代码,针对你这个截图,我要的效果是Cell 01,02,03固定到屏幕上,不随着滚定条横向滚动,可纵向滚动,就是固定显示的信息,其他cell,横向可滚动,不知道这个效果你有没有可指教的
级别: 精灵王
发帖: 1232
可可豆: 5298 CB
威望: 5293 点
在线时间: 2914(时)
发自: Web Page
回 6楼(tzhan) 的帖子
不不不不不不会了。
级别: 新手上路
可可豆: 30 CB
威望: 30 点
在线时间: 109(时)
发自: Web Page
这不是我司的软件吗
级别: 新手上路
可可豆: 21 CB
威望: 11 点
在线时间: 16(时)
发自: Web Page
来富途证券,给你看源代码
Pages: 1/3
关注本帖(如果有新回复会站内信通知您)
发帖、回帖都会得到可观的积分奖励。
按"Ctrl+Enter"直接提交
关注CocoaChina
关注微信 每日推荐
扫一扫 关注CVP公众号
扫一扫 浏览移动版- 创建于 日
这是一位web前端开发工程师的个人站,内容主要是网站开发方面的技术文章,大部分来自学习或工作,部分来源于网络,希望对大家有所帮助。
致力于web应用开发&研究工作,专注web前端开发,关注互联网前沿技术与趋势。
一、iOS7不支持cell多个按钮这个时候可以使用一个三方库JZTableViewRowAction,引用类扩展文件并实现其代理方法
JZTableViewRowAction下载地址:http://download.csdn.net/download/chunjunlu/9506344
- (nullable NSArray&UITableViewRowAction *& *)tableView:(UITableView *)tableView editActionsForRowAtIndexPath:(NSIndexPath *)indexPath {
__weak typeof(self) weakself =
void(^deleteBabyAction)(UITableViewRowAction *, NSIndexPath *) = ^(UITableViewRowAction * _Nonnull action, NSIndexPath * _Nonnull indexPath) {
[weakself deleteAction:self.babyList[indexPath.row]];
[weakself.babyListTable setEditing:false animated:true];
UITableViewRowAction *deleteAction = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleDefault title:@"删除" handler:deleteBabyAction];
deleteAction.backgroundColor = [UIColor colorWithHexString:@"ff4545"];
void(^setDefaultBabyAction)(UITableViewRowAction *, NSIndexPath *) = ^(UITableViewRowAction * _Nonnull action, NSIndexPath * _Nonnull indexPath) {
[weakself setDefaultBaby:self.babyList[indexPath.row]];
[self.babyListTable setEditing:false animated:true];
UITableViewRowAction *setDefaultAction = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleDefault title:@"设为当前" handler:setDefaultBabyAction];
setDefaultAction.backgroundColor = [UIColor colorWithHexString:@"ffa902"];
return @[deleteAction,setDefaultAction];
二、iOS8以后可以直接使用系统设置
* tableView:editActionsForRowAtIndexPath: // 设置滑动删除时显示多个按钮
* UITableViewRowAction // 通过此类创建按钮
* 1. 我们在使用一些应用的时候,在滑动一些联系人的某一行的时候,会出现删除、置顶、更多等等的按钮,在iOS8之前,我们都需要自己去实现。But,到了iOS8,已经写好了,只需要一个代理方法和一个类就搞定了
* 2. iOS8的协议多了一个方法,返回值是数组的tableView:editActionsForRowAtIndexPath:方法,我们可以在方法内部写好几个按钮,然后放到数组中返回,那些按钮的类就是UITableViewRowAction
* 3. 在UITableViewRowAction类,我们可以设置按钮的样式、显示的文字、背景色、和按钮的事件(事件在Block中实现)
* 4. 在代理方法中,我们可以创建多个按钮放到数组中返回,最先放入数组的按钮显示在最右侧,最后放入的显示在最左侧
* 5. 注意:如果我们自己设定了一个或多个按钮,系统自带的删除按钮就消失了...
/设置滑动时显示多个按钮
- (NSArray *)tableView:(UITableView *)tableView editActionsForRowAtIndexPath:(NSIndexPath *)indexPath{
//添加一个删除按钮
UITableViewRowAction *deleteAction = [UITableViewRowAction rowActionWithStyle:(UITableViewRowActionStyleDestructive) title:@删除 handler:^(UITableViewRowAction *action, NSIndexPath *indexPath) {
NSLog(@点击了删除);
//1.更新数据
[self.dataArray removeObjectAtIndex:indexPath.row];
//2.更新UI
[tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:(UITableViewRowAnimationAutomatic)];
//删除按钮颜色
deleteAction.backgroundColor = [UIColor cyanColor];
//添加一个置顶按钮
UITableViewRowAction *topRowAction =[UITableViewRowAction rowActionWithStyle:(UITableViewRowActionStyleDestructive) title:@置顶 handler:^(UITableViewRowAction *action, NSIndexPath *indexPath) {
NSLog(@点击了置顶);
//1.更新数据
[self.dataArray exchangeObjectAtIndex:indexPath.row withObjectAtIndex:0];
//2.更新UI
NSIndexPath *firstIndexPath =[NSIndexPath indexPathForRow:0 inSection:indexPath.section];
[tableView moveRowAtIndexPath:indexPath toIndexPath:firstIndexPath];
//置顶按钮颜色
topRowAction.backgroundColor = [UIColor magentaColor];
//--------更多
UITableViewRowAction *moreRowAction = [UITableViewRowAction rowActionWithStyle:(UITableViewRowActionStyleNormal) title:@更多 handler:^(UITableViewRowAction *action, NSIndexPath *indexPath) {
DetailViewController *detailVC = [[DetailViewController alloc]init];
[self.navigationController pushViewController:detailVC animated:YES];
//背景特效
//moreRowAction.backgroundEffect = [UIBlurEffect effectWithStyle:(UIBlurEffectStyleDark)];
//----------收藏
UITableViewRowAction *collectRowAction = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleDefault title:@收藏handler:^(UITableViewRowAction *action,NSIndexPath *indexPath) {
UIAlertView *alertView = [[UIAlertView alloc]initWithTitle:@收藏 message:@收藏成功 delegate:self cancelButtonTitle:@确定 otherButtonTitles:nil, nil];
[alertView show];
[alertView release];
//收藏按钮颜色
collectRowAction.backgroundColor = [UIColor greenColor];
//将设置好的按钮方到数组中返回
return @[deleteAction,topRowAction,moreRowAction,collectRowAction];
// return @[deleteAction,topRowAction,collectRowAction];
阅读(...) 评论()推荐这篇日记的豆列
&&&&&&&&&&&&主题 : 多个NSProgressIndicator在NSTableView中的问题
级别: 新手上路
可可豆: 30 CB
威望: 30 点
在线时间: 2(时)
发自: Web Page
来源于&&分类
多个NSProgressIndicator在NSTableView中的问题&&&
我有一个要在NSTableView里添加多个进度条的程序,但是addSubView这个方法老是&&&把进度条添加到列表中的最后一行,像示例程序那样,本来edit按钮的目地是把进度条&&&添加到我选定的那一行,但是进度条总是出现在最后一行,好像addSubView这个函数并不能明确指定添加到哪一行,&&&不知道有没有人能帮助解决这个问题,附件是示例源代码,&&&是一个很简单的程序,谢谢&
(63 K) 下载次数:77
级别: 精灵王
可可豆: 12897 CB
威望: 12897 点
在线时间: 857(时)
发自: Web Page
fixed... 不过问题还是挺多... 好好再钻研钻研吧...
(69 K) 下载次数:126
级别: 新手上路
可可豆: 30 CB
威望: 30 点
在线时间: 2(时)
发自: Web Page
楼上是真高手阿,几下就解决了困扰我很久的问题,不过你的代码里&&这一句是不是多余的阿if ([progressIndicator superview] != tableview)&&它的superview不可能不是tableview吧?&&&另外你说问题还是挺多是什么意思,我测试了你的代码,没有发现什么问题阿&.
级别: 精灵王
可可豆: 12897 CB
威望: 12897 点
在线时间: 857(时)
发自: Web Page
引用 引用第2楼cocoanewguy于 18:40发表的&&:&不过你的代码里,这一句是不是多余的阿if ([progressIndicator superview] != tableview)&它的superview不可能不是tableview吧?&&&这是个好习惯,尤其是当系统变复杂了以后。&&&引用 引用第2楼cocoanewguy于 18:40发表的 :&另外你说问题还是挺多是什么意思,我测试了你的代码,没有发现什么问题阿&&我没写什么代码,就加了几行fix了你先前说的问题。但是这个项目里还有其它的问题,你可能需要rearchitect这个app。&
级别: 新手上路
可可豆: 30 CB
威望: 30 点
在线时间: 2(时)
发自: Web Page
级别: 新手上路
可可豆: 1 CB
威望: 1 点
在线时间: 0(时)
发自: Web Page
code has some problems
级别: 新手上路
可可豆: 48 CB
威望: 38 点
在线时间: 43(时)
发自: Web Page
下来看看。谢谢 了
关注本帖(如果有新回复会站内信通知您)
发帖、回帖都会得到可观的积分奖励。
按"Ctrl+Enter"直接提交
关注CocoaChina
关注微信 每日推荐
扫一扫 关注CVP公众号
扫一扫 浏览移动版

我要回帖

更多关于 南航添加受让人 的文章

 

随机推荐