English 中文(简体)
从 iOS 的 nib 动态装入子视图
原标题:Dynamically load subview from nib with iOS

我有一个应用程序, 底部有一些标签( UITabViewCovernor), 大多数标签上部也包含一个工具栏 。

用户需要登录才能访问其中的一个标签 -- 请将其命名为“ 我的账户” 标签。 一旦登录了, 他们就会被显示他们的配置信息, 或者如果他们还没有设置, 那么他们就会被显示一个对话框, 来解释填入其配置文件的好处, 并加上一个大按钮, 上面写着“ 开始 ” 。 这些屏幕中的所有三个屏幕都有底部的标签, 顶部有一个工具栏。 因此, 我所绘制的视图只包含屏幕的中间部分, 因此它们需要作为子视图被装入。 实质上, 我试图显示基于用户当前状态的三种不同子视图中的一种, 在用户显示变化时( 例如当它们登录时), 我需要能够将这些子视图相互切换 。

我最初为这些子视图创建了三个独立的“层 ”, 并且只是用SetHidden在它们之间转换, 但是这在初始化所有三种观点方面有很大的不利之处, 不论使用哪种观点。 当我只是隐藏/ 隐藏它们时, 我也不确定如何激活过渡 。

最理想的情况是,我想创建三个单独的 nib 文件( 每个视图一个), 共享相同的查看控制器( 父控制器), 并根据用户的状态动态装入它们。 所以, 如果用户没有登录, 我会在“ Login” nib 中装入, 然后使用添加的SubView 将其添加到屏幕中。 当用户登录进去时, 我就可以以子视图的形式加载一个其它的 nib, 然后用动画切换子视图 。

我面临的问题是,所有三个子视图都足够简单,所以我只想在顶层视图控制器(“ MyAccountVoctor” )中保留处理按钮点击的逻辑。例如,我希望能够处理同一视图控制器内“login”按钮的点击事件,该控制器负责显示用户的配置信息。我不想为每个子视图创建单独的视图控制器。

这就是我目前正在做的:

- (void)showLoginView {
    UIView *loginView = [[[NSBundle mainBundle] loadNibNamed:@"Login" owner:self options:nil] objectAtIndex:0];
    [self.view addSubview:loginView];
}

它只是崩溃在 EXC_BAD_ADERDESS 的“ addSubview” 线上。 顺便提一下它的行为方式, 它似乎正在失去记忆, 可能是由于无穷无尽的循环或什么的。 我有一种感觉, 我在这里的解决方案上走投无路了 。

我想做的事是可能的吗?

我还想了解处理登录屏幕的最佳做法。我一直很难找到iPhone 应用程序的最佳工作流程。我过去常写网络应用程序(当然,登录是必要的,这个应用程序被绑在网站上 ) 。

谢谢!

EDIT: 我考虑过为每个子视图 nbs 写入一个单独的查看控制器。 这些查看控制器将在其各自的 nibs 内处理按钮点击, 然后使用客观的 C 代表功能将事件传播到父视图控制器, 但是如果可能的话, 我愿意避免很多额外的代码 。

最佳回答

如果你还没有,我重复检查你的连接 在那个nib和NSLog的Val类别 在指数0, 以确保它绝对是一个UIView。

我的忠告是: 切除缩写。 如果您不能用代码来做, 为什么还要麻烦呢? 我仅仅用缩写作为布局工具, 从来不用二进制包装它们。 只需做 UIView 子类, 节省时间、 内存、 代码和存储空间 。

至于您的登录屏幕想法问题, 当我卡住时, 我将访问 < a href=" http://mobile- patdrins.com/" rel="nofollow" > Mobile Development Frames 图片库 来启发您。 如果您想要更多... - 专家应该说- 意见, 请访问 SO s 视觉表弟 ux. stackchange. com 。

问题回答

暂无回答




相关问题
List Contents of Directory in a UITableView

I am trying to list the contents of Ringtones directory in a TableView, however, I am only getting the last file in the directory in ALL cells, instead of file per cell. This is my code: - (...

iPhone NSUserDefaults persistance difficulty

In my app i have a bunch of data i store in the NSUserdefaults. This information consists of an NSObject (Object1) with NSStrings and NSNumbers and also 2 instances of yet another object (Object2). ...

Writing a masked image to disk as a PNG file

Basically I m downloading images off of a webserver and then caching them to the disk, but before I do so I want to mask them. I m using the masking code everyone seems to point at which can be found ...

Resize UIImage with aspect ratio?

I m using this code to resize an image on the iPhone: CGRect screenRect = CGRectMake(0, 0, 320.0, 480.0); UIGraphicsBeginImageContext(screenRect.size); [value drawInRect:screenRect blendMode:...

Allowing interaction with a UIView under another UIView

Is there a simple way of allowing interaction with a button in a UIView that lies under another UIView - where there are no actual objects from the top UIView on top of the button? For instance, ...

热门标签