您的代码无法通过以下方法更新文本字段:
-(void)nuberofitem:no
{
NSLog(@"number : %d",no); //Its show correct value
localtextbox.text = no; // THIS IS WHERE YOU WENT WRONG
NSLog(@"text box value : %@",localtextbox.text); //But in label it shows null value
}
localtextbox.text 是 UITextField 或 Label 的属性,需要将 NSString 对象传递给它。您正在传递一个 NSUInteger 对象,因为它是错误类型的对象,所以编译器只会将其读取为“nil”。为了更好地理解正在发生的事情,您必须像编译器一样阅读您的代码。
以下是计算机读取代码的方式:
1. 应用程序不断循环查看用户是否与其界面进行了交互(事件循环)
2. 用户在界面 (.xib) 文件上单击了一个按钮
3.事件循环暂停以注意到按钮已被按下。它查看隐藏在 Xcode 中的开发人员的视野中的 xml 信息,并查看其“目标”属性。此目标属性包含一个指向“选择器”的指针(这只是您的 IBAction 方法的一个花哨的词_(IBAction)click:sender
)
4. 编译器将此方法定位在您使用 Connections Inspector 指向它的类中并运行该方法
:声明一个 NSUInteger 并将其设置为值:2
b。你的一个实例second-class
被分配和实例化(这个实例是可用类型的对象second-class
,在这种情况下被命名为sc
)
c.类 'second-class' 的 'sc' 实例调用方法
5。我们输入方法-(void) numberOfItem:(NSUInteger )no
,在其中传递变量 'no',其中包含值:2(实际上它是对一块内存的引用,但你可以将其视为字面值 2)。
6. 编译器点击第一个 NSLog 语句,并用 NSUInteger 值替换 '%d' 格式化程序(这就是这个特定格式化程序的设计方式)。7. 编译器localtextbox.text = [NSString stringWithFormat:@"%d",no];
使用'stringWithFormat'方法将NSUInteger 转换为NSString。这非常重要,否则 localtextbox.text 将保持为零。
到目前为止一切都很完美,接下来 Cocoa 和 Cocoa Touch 如果我们使用 interface builder 正确构建我们的界面,我们会为我们做一些工作。
只要我们遵循开发环境的规则,Xcode 已经内置了可以为我们完成大量工作的机制。如果标签的 'text' 属性发生变化,标签将自动更新,并且此更改将立即发生,但前提是我们已将 textField 或标签声明为 IBOutlet(我们可以在代码中或使用 Interface Builder 和 Connections Inspector 执行此操作)。将标签设置为 IBOutlet 就像告诉 textField 或标签,“嘿,标签,如果您的 'text' 属性已更改,则更新您的视图以反映该更改。” 您已明确告诉它注意更改,或者标签认为更改对于向用户显示的内容并不重要。
如果您已将标签正确设置为 IBOutlet,那么您的代码将在 localtextbox.text 属性更改时自动更新视图,并将继续到下一行并正确记录 localtextbox.text 属性的值,无论如何。
您需要在 Connections Inspector 中重新访问您的 Connections。请按照以下步骤操作(当您开始不小心进行错误连接时,这很容易):
断开标签/文本字段连接
1. 打开项目的 .xib 文件。
2. 在屏幕右侧选择确保您的 Xcode 设置如下:
3. 在 .xib 文件中选择标签或文本字段(无论它是什么)。
4. 选择标签/文本字段后,导航到屏幕右侧并在身份检查器面板的上部工具栏中选择最右侧的选项(您可以将鼠标悬停在工具上,然后会出现工具提示上面写着“Connections Inspector”,它是一个圆圈,里面有一个指向右边的箭头:
5. 选择标签/文本字段(这些连接会根据所选接口对象而变化),删除所有连接,最重要的是“引用插座”。
重新连接标签/文本字段
1. 将您的 Xcode 布局更改为助手编辑器模式:
2. 只要您的 .xib 文件在您执行此操作时打开,Main.h 文件也应该打开(这是我们想要的)。
3. 在 Main.h 文件中添加一组花括号,使代码看起来像这样:
#import <UIKit/UIKit.h>
@interface Main : UIViewController {
}
@end
4. 将鼠标悬停在标签上,按住 control 从标签/文本字段拖动到这些花括号之间的区域并释放(执行此操作时应该看到一条蓝线)。像这样:
如图所示,应该会弹出一条消息,说明“创建奥特莱斯或奥特莱斯收藏”。我们要创建一个 Outlet (IBOutlet)。当你释放一个表单会弹出。我们要选择连接:'Outlet',将其命名为我们的 textfield:localtextfield 的名称,并确保引用是 'Weak'。像这样:
5. 单击“连接”,假设您已经说过的所有其他内容都可以正常工作,您的代码应该可以正常工作。
这是 UITableViewCell 的子类吗?如果是这样,可以调用[[self tableview] reloadData];
action 方法来手动更新 tableview 的单元格。
让我知道它是否仍然无法正常工作。