我有一个应用程序,它将视图层分为三个部分:
我花了几个小时试图找到一些有用的谷歌,但我没有运气.我需要一个简短而完整的应用程序示例,说明如何使用Router和connectOutlet以及命名出口.
先生.
我正在使用iOS 7运行XCode 5.我需要在布局之前动态更改UITextView的高度约束.我看过许多帖子,说明这可以通过从IB中的约束到源代码建立出口连接来完成.我试图从IB中的约束出口连接到拥有类的头文件,但无法建立连接 - 当我拖动头文件时IB不会"突出显示",就像在建立连接时一样从其他对象,如按钮等.
有没有人遇到过这个?非常感谢所有帮助.
我正试图通过路由在我的应用程序中启动模式.一切似乎都有效,除了向URL添加额外的斜杠以防止它解析.Url应该看起来像这样(如果我手动输入它会起作用)......
/accounts(modal:accounts/1/edit)
Run Code Online (Sandbox Code Playgroud)
但我得到了这个(注意基本网址和出口目标之间的斜线)......
/accounts/(modal:accounts/1/edit)
Run Code Online (Sandbox Code Playgroud)
基本标签已设置...
<head>
<meta charset="utf-8">
<title>myApp</title>
<base href="/">
...
</head>
Run Code Online (Sandbox Code Playgroud)
这是我的路由配置(accounts-routing.module.ts)
const ACCOUNT_ROUTES: Routes = [
{
path: 'accounts',
component: AccountsIndexComponent
},{
path: 'accounts/new',
component: AccountsNewComponent
},{
path: 'accounts/:id',
component: AccountsShowComponent
},{
path: 'accounts/:id/edit',
component: AccountsEditComponent,
outlet: 'modal'
}
];
Run Code Online (Sandbox Code Playgroud)
和插座(app.component.html)
<router-outlet></router-outlet>
<router-outlet name="modal"></router-outlet>
Run Code Online (Sandbox Code Playgroud)
和链接......
<a [routerLink]="[{ outlets: { modal: ['accounts', account.id, 'edit'] } }]">Edit</a>
Run Code Online (Sandbox Code Playgroud)
我错过了什么?该项目是利用创建angular-cli@1.0.0-beta.26和angular@2.4.6和angular-router@3.4.6安装.
FWIW,这是日志的截图...
我正在努力重构一个继承的Ember应用程序,它有相当多的非mvc混乱.我希望尽可能保持模块化,并希望在多个屏幕中重用各种ui组件,以帮助防止代码重复.
看起来网点是最好的方法.
现在,我有一个显示许多元素的UI,每个元素都使用模板化视图进行渲染.
{{#each item in controller}}
{{view App.ItemThumbView}}
{{/each}}
Run Code Online (Sandbox Code Playgroud)
此视图的右侧边栏是根据选择而更改的插座.当我选择一个项目时,我想在模板化的子视图中显示一个编辑操作列表,选中后,通过嵌套的插座显示正确的编辑UI.
实质上
+---------------------------------------------------+
| Parent Pane
|
| +------------------------------+ +----------+
| | Device Section | | Sidebar |
| | | | [Outlet] |
| | +--------+ +---------+ | | |
| | | Dev 1 | | Dev 2 | | | |
| | |[outlet]| | [outlet]| | +----------+
| | +--------+ +---------+ |
| +------------------------------+
+--------------------------------------------------+
Run Code Online (Sandbox Code Playgroud)
嵌套视图都共享相同的控制器 - 这是有道理的 - 但我需要能够将选定的视图连接到其相应的插座.我最初尝试连接插座时从未显示过.代码根本没有失败,因此控制器只是更新隐藏的插座.
如何在Ember中为嵌套视图定位正确的插座?(最好的情况是,我似乎能够触及侧栏插座,但不能触及嵌套设备模板中的插座.)这是否是首先在ember中实现上下文菜单的合理结构?
*澄清使用我当前的设置,每个设备项目使用相同的模板呈现.选中后,侧栏插座将使用某些设备的元信息进行更新,而所选设备视图也会将其插座连接到编辑菜单.一次只能连接一个设备项目的"编辑"插座.
在这里使用插座是否有意义,或者我是否应该将条件逻辑放入模板中以便根据需要显示编辑菜单?
更新以重述问题的最佳实践部分: …
我在理解iPhone如何处理事件的出口概念方面遇到了问题.救命!代表们也让我感到困惑.有人会关心解释吗?
Xcode 4.5是否具有稍微不同的自动生成属性及其关联的内存释放部分(在dealloc和viewDidUnload中)?
我昨天从4.5 Beta 1升级到Xcode 4.5.现在,当我使用Interface Builder创建一个插座时(通过Ctrl-dragging,比如UILabel到相关的头文件),它会@property像往常一样在标题中创建声明:
@property (retain, nonatomic) IBOutlet UILabel *propertyName;
Run Code Online (Sandbox Code Playgroud)
但是,在关联的.m文件中,没有@synthesize声明.
代码viewDidUnload是正常的:
- (void)viewDidUnload {
[self setPropertyName:nil];
[super viewDidUnload];
}
Run Code Online (Sandbox Code Playgroud)
但是,代码中的属性名称dealloc前缀为_:
- (void)dealloc {
[_propertyName release];
[super dealloc];
}
Run Code Online (Sandbox Code Playgroud)
这也意味着我不能将该属性引用为normal([propertyName doSomething];)
有什么变化吗?或者我不小心碰巧改变了一些设置?
在 Rails 7 应用程序中,单击图标可切换表单的显示属性。两个 HTML 元素都正确连接到各自的控制器(切换器和切换器)。表单(togglee)是图标(toggler)的出口。问题:切换器控制器无法识别切换器插座。五个插座属性(例如 this.toggleeOutlets)仍然未定义。
HTML:
<i class="toggle-display fa fa-chevron-down" data-controller="toggler" data-toggler-togglee-outlet="#filter-form" data-action="click->toggler#handleClick" title="Asset Filter"></i>
及以下
<div id="filter-form" style="display:none" data-controller="togglee">
...
/div>
Run Code Online (Sandbox Code Playgroud)
控制器:
\\ toggler_controller.js
import { Controller } from "@hotwired/stimulus"
export default class extends Controller {
static outlets = [ "togglee" ]
connect() {
console.log("Toggler controller connected")
}
handleClick(event) {
console.log("toggler controller: handleClick")
event.preventDefault();
console.log("outlet controllers:", this.toggleeOutlets)
...
}
}
Run Code Online (Sandbox Code Playgroud)
\\ togglee_controller.js
import { Controller } from "@hotwired/stimulus"
export default class extends Controller {
connect() {
console.log("Togglee …Run Code Online (Sandbox Code Playgroud) 在Xcode中,我创建了一个插座并使其连接.然后我通过单击交叉连接检查器删除了连接.但是,未使用的插座总是出现在那里.如何删除未使用的插座.(我删除了.m文件中的代码)
编辑:由于我还没有安装XCode 4,我想知道MD 2.8是否与XCode 3.2.6完全兼容.特别是,我能够使用MT文档中描述的新程序连接Outlets和Actions 吗?
我刚刚安装了MonoDevelop(MD)2.8.它似乎无法工作我期待.
在MD 2.6中,当我创建一个新的UIViewController时,该控制器如下所示:
另外,如果我打开一个xib文件,Controller.xib,只打开Interface Builder(IB).如果我向xib添加插座,则插件在Controller.xib.designer.cs中可见.
在MD 2.8中,当我创建一个新的UIViewController时,该控制器如下所示:
所以我有两个文件而不是一个.
另外,如果我打开一个xib文件,则会打开Controller.xib,IB和Xcode.如果我向xib添加插座,则设计器中不会显示插座.
有什么建议?
我一直在寻找其他人设置的.xib,如果我可以,比如说,双击与outlet/actions相关的属性/方法,跳转到声明这些的/定义.我已经尝试了我能想到的一切,但到目前为止无济于事.我是对的,没有办法做到这一点......?
为了说明,我说我有一个UIButton来进行"重置".当我在Interface Builder中右键单击它时(这是Xcode 4.4),我可能会看到有一个名为"resetButton"的关联出口和一个映射到"onReset"的动作.据我所知,找到相关代码的唯一方法是手动将这些属性/方法名称键入搜索框并在关联的.h/.m中查找(例如使用Project Navigator搜索).在某些情况下,我在不同的文件中多次使用相同的名称,然后必须找出哪个是我真正感兴趣的对象.
是否有一些技巧可以用来跳转到我没见过的代码?
ETA
outlet ×10
xcode ×4
ember.js ×2
objective-c ×2
action ×1
angular ×1
builder ×1
controller ×1
delegates ×1
hotwire ×1
interface ×1
ios ×1
iphone ×1
javascript ×1
modal-dialog ×1
monodevelop ×1
properties ×1
router ×1
turbo ×1
xamarin.ios ×1