- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在开发我的第一个 MAC 应用程序,我下载了一个 PxListView 的示例
我必须在单元格xib上添加一个按钮和背景图像并将它们与 Controller 绑定(bind)
并且,当单击按钮时,我被设置为该单元格的高度比其他单元格大得多。完成了,
并且工作正常。
但是现在我想像在女巫细胞在那个细胞中打开之后那样开发我想在它上面添加一些额外的包含( Controller ),那么如何使用给定的例子呢?
请帮我提出一些建议。
前喜欢点击按钮
小鸡按按钮后,我想像这样发展
最佳答案
你写
i have to added one button and background image on cell xib and bind them with controller
PXListViewCell
--为方便起见,我们将您的子类称为
TemplateListViewCell
--并添加了
xib
来自
TemplateListViewCell
的哪些实例将被加载
+[PXListViewCell cellLoadedFromNibNamed:bundle:reusableIdentifier:]
TemplateListViewCell.xib
中还有一个[至少一个] 按钮.
when on button click i was set height of that cell is much bigger then other. that is done, and work fine
TemplateListViewCell
上的方法。如
- (IBAction)toggleDetail:(id)sender
{
//Code to grow or shrink the height of [self frame].
//...
}
-toggleDetail
的方法中,对
PXListView
的两个修改文件是必要的:
1.
添加协议(protocol)方法
- (void)listView:(PXListView *)aListView setHeight:(CGFloat)height ofRow:(NSUInteger)row;
PXListViewDelegate
协议(protocol)。
2.
添加属性
@property (nonatomic, assign) BOOL expanded;
PXListViewCell
.
-toggleDetail
的实现看起来像这样:
- (IBAction)toggleDetail:(id)sender
{
BOOL wasExpanded = [self expanded];
NSRect oldFrame = [self frame];
CGFloat oldHeight = oldFrame.size.height;
CGFloat newHeight = oldHeight;
CGFloat heightIncrement = 0.0f;
if (wasExpanded) {
heightIncrement = -80.0f; //use whatever value is appropriate
} else {
heightIncrement = 80.0f; //use whatever value is appropriate
}
newHeight += heightIncrement;
[[[self listView] delegate] listView:[self listView] setHeight:newHeight ofRow:[self row]];
[[self listView] reloadData];
BOOL isExpanded = !wasExpanded;
[self setExpanded:isExpanded];
}
[[self listView] reloadRowAtIndex:[self row]];
似乎更好。代替
[[self listView] reloadData]
,但不幸的是,这不起作用:如果用户隐藏细节——垂直缩小单元格——应该出现在屏幕上的新单元格不会。
that is done, and work fine.
-[TemplateListViewCell toggleDetail:]
的方法.
but now i want to develop like after is witch cell has open in that cell i want to add some extra contain (Controller) on it, so how it will possible using given example? pls help me to give some suggest how it will be done.
TemplateListViewCell
的实例如果它们被扩展,则包含额外的 View 。
-[TemplateListViewCell toggleDetail]
似乎很诱人,但这不会像我们希望的那样成功。问题是,我们需要处理扩展单元格被滚动出 View 并滚动回 View 的情况。
PXListViewCell
的使用范围之外仍然存在。子类实例:我们要么需要跟踪
PXListView
中的扩展本身或在其委托(delegate)中。
PXListView
中跟踪此信息。本身。然而,为了这个问题,我将演示如何跟踪委托(delegate)中的单元格扩展。为此,我正在扩展
PXListViewDelegate
协议(protocol)并对
PXListView
进行其他更改文件:
1.
添加方法
- (void)listView:(PXListView *)aListView setExpanded:(BOOL)expanded atRow:(NSUInteger)row;
- (BOOL)listView:(PXListView *)aListView expandedAtRow:(NSUInteger)row;
PXListViewDelegate
.
2.
添加方法
- (void)setCell:(PXListViewCell *)cell expandedAtRow:(NSUInteger)row
{
if ([[self delegate] respondsToSelector:@selector(listView:expandedAtRow:)]) {
[cell setExpanded:[[self delegate] listView:self expandedAtRow:row]];
}
}
PXListView
.
3.
调用
-[PXListView setCell:expandedAtRow:]
来自
-[PXListView layoutCells]
- (void)layoutCells
{
//Set the frames of the cells
for(id cell in _visibleCells)
{
NSInteger row = [cell row];
[cell setFrame:[self rectOfRow:row]];
[self setCell:cell expandedAtRow:row];
[cell layoutSubviews];
}
NSRect bounds = [self bounds];
CGFloat documentHeight = _totalHeight>NSHeight(bounds)?_totalHeight:(NSHeight(bounds) -2);
//Set the new height of the document view
[[self documentView] setFrame:NSMakeRect(0.0f, 0.0f, NSWidth([self contentViewRect]), documentHeight)];
}
-[PXListView layoutCell:atRow:]
:
- (void)layoutCell:(PXListViewCell*)cell atRow:(NSUInteger)row
{
[[self documentView] addSubview:cell];
[cell setFrame:[self rectOfRow:row]];
[cell setListView:self];
[cell setRow:row];
[cell setHidden:NO];
[self setCell:cell expandedAtRow:row];
}
4.
设置
_expanded
至
NO
在
-[PXListViewCell prepareForReuse]
:
- (void)prepareForReuse
{
_dropHighlight = PXListViewDropNowhere;
_expanded = NO;
}
PXListViewCell
subclass, MyListViewCell
,与
PXListView
一起分发,执行
-[MyListViewCell prepareForReuse]
调用失败
[super prepareForReuse]
.确保此调用是在
[TemplateListViewCell prepareForReuse]
中进行的:
- (void)prepareForReuse
{
//...
[super prepareForReuse];
}
-[TemplateListViewCell toggleDetail:]
进行一项更改.线
[self setExpanded:isExpanded];
[[[self listView] delegate] listView:[self listView] setExpanded:isExpanded atRow:[self row]];
PXListView
的委托(delegate)以正确处理新的委托(delegate)方法,您已准备好覆盖
[PXListViewCell setExpanded:]
在你的子类中
TemplateListViewCell
:
- (void)setExpanded:(BOOL)expanded
{
if (expanded) {
//add detail subviews
} else {
//remove detail subviews
}
[super setExpanded:expanded];
}
//add detail subviews
使用您自己的代码以编程方式添加您想要的详细 subview 并替换
//remove detail subviews
使用代码删除您想要的详细 subview ,检查它们是否首先存在。
i want to add some extra contain (Controller) on it
TemplateListViewCell
添加 View Controller 而不是 View 。 .为此,请使用
NSBox
并设置盒子的
contentView
到您的 View Controller 的
view
. (有关详细信息,请参阅
this answer。)
NSBox
中显示单个 View Controller 的 View 在扩展
TemplateListViewCell
,您只需 (1) 将属性添加到
TemplateListViewCell
引用您的 View Controller 并 (2) 添加
NSBox
至
TemplateListViewCell
xib 并设置其
contentView
到相应的 View Controller 对
[cell setExpanded:YES]
的 View 并将其 contentView 设置为
nil
在
[cell setExpanded:NO]
.
关于macos - 如何在 ListView 中添加 subview ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14031146/
在跨平台应用程序中,我正在使用一个配置文件,允许用户根据需要覆盖各种默认值。 我的问题是...在哪里放置/查找此配置文件,尤其是关于 MacOS X(我从未使用过且无法访问)?我知道 MacOS X
由于Xcode的代码签名和存档非常耗时,枯燥且有问题,因此我一直通过自己的脚本使用命令行工具xcodebuild,codesign等对我的开发人员ID签名的macOS应用进行代码签名,存档和交付。公证
我正在寻找一种在 MacOs 应用程序中以编程方式逐帧绘制动画的方法(不是关键帧属性动画)。我尝试使用drawLayer:inContext:委托(delegate)方法绘制到CALayers,调用s
就目前情况而言,这个问题不太适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、民意调查或扩展讨论。如果您觉得这个问题可以改进并可能重新开放,visit
我在83%的安装openCV中遇到问题...我的python是2.7.3。我已经适应了xcode。我使用了这个tuturial。 我的Cmake: cmake -D CMAKE_BUILD_TYPE=
我需要弄清楚 Mac 的日志键的键码(ctrl、shift 等)或者需要知道如何跟踪这个日志按键事件... 基本上我正在将 mac key 代码转换为等效的 Windows key 代码......我
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 2年前关闭。 Improve thi
我想将一个 Rust 程序从我的 x86 Mac 交叉编译成一个可以在 Silicon Mac 上运行的二进制文件,但我无法弄清楚链接。 我有: 运行 macOS 10.15.7 Catalina 的
在 macOS ventura 中,我无法复制我的终端应用程序。 我想这样做,因为我有一个 M1 处理器,我想要一个使用 Rosetta2 打开的处理器和一个本地打开的处理器。 有什么办法解决这个问题
当您可以访问实际硬件时,在 Mac 上以安全模式启动是很容易的。您只需在启动时按住 shift 键即可。 在虚拟机中运行 macOS (OSX) 时如何启动到安全模式? 最佳答案 Schmitty 在
这个问题在这里已经有了答案: How to get Conda and Virtualenv to work on mac OS Catalina? (8 个答案) 关闭 3 年前。 我在 macO
我有一个关于 macOS 应用程序图标的问题。我以前看过很多动画图标,但从来没有真正密切关注正在发生的事情/他们是如何做的。我只是想知道是否有任何方法可以创建在停靠栏中动画的动画应用程序图标。 例如:
每当我在 vim 中输入终端命令(例如,!echo hello)时,我会立即被踢出去查看该终端命令的结果,然后提示我使用 按 ENTER 或键入命令继续。这有点刺耳。我想留在 vim 中,并在底部打印
当使用文本编辑应用程序时,选择一种字体(例如“Menlo”)来呈现字形,当所选字体不包含特殊字形(例如“𠹷”,它是一个简单的中文字形,“Menlo"不包含它), 应用程序会选择一种字体来呈现它, 在
已经有几个关于如何在 Mac 上启用虚拟化的问题(例如 How to enable support of CPU virtualization on Macbook Pro?)。经常报告 sysctl
这只是出于好奇。 Exposé 有两个功能,其中一个是重新排列桌面上的窗口,一个是显示所有打开的窗口,这样用户可以看到隐藏在其他窗口下面的窗口,另一个功能是将所有窗口移到两侧,让用户与桌面交互。 我只
我使用的是 MacOS X,我对应用程序包类型的东西还很陌生。我正在编写一个程序来打开一个窗口并注册鼠标输入——而不是一个命令行工具。当我将我的代码(用 C 编写,如果这很重要)编译成一个可执行文件(
我正在制作一个必须支持 macOS 的 Flutter 插件。但是,当我想创建一个插件并在示例应用程序中运行该插件时(即使我还没有编辑过 Flutter 生成的代码),Xcode 会抛出以下错误。 无
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 7年前关闭。 Improve thi
我想在终端(MacOs)中像屏幕一样显示当前目录面包屑: 我该怎么做? 现在它只是一个文本...... 谢谢 最佳答案 首选项 -> 窗口 -> 检查工作目录或文档下的“路径”。 路径将作为窗口标题的
我是一名优秀的程序员,十分优秀!