Objective c 我的可变数组不是';不要添加按钮
我正在尝试使用NSMutableArray将按钮添加到滚动视图中。该代码在我用作参考的twitter示例中运行良好,但由于某些原因,它在本例中不起作用。在twitter搜索案例中,代码在主类中实现。在本例中,我是在反向视图中实现它的。有人能帮我吗,因为我对目标c有点陌生。 提前谢谢 这是初始化NSMutableArray按钮的initObjective c 我的可变数组不是';不要添加按钮,objective-c,Objective C,我正在尝试使用NSMutableArray将按钮添加到滚动视图中。该代码在我用作参考的twitter示例中运行良好,但由于某些原因,它在本例中不起作用。在twitter搜索案例中,代码在主类中实现。在本例中,我是在反向视图中实现它的。有人能帮我吗,因为我对目标c有点陌生。 提前谢谢 这是初始化NSMutableArray按钮的init - (id)init { self = [super init]; // initialize the superclass members if
- (id)init
{
self = [super init]; // initialize the superclass members
if (self != nil) // if the superclass initialized properly
{
// creates list of valid directories for saving a file
NSArray *paths = NSSearchPathForDirectoriesInDomains(
NSDocumentDirectory, NSUserDomainMask, YES);
// get the first directory
NSString *dir = [paths objectAtIndex:0];
// concatenate the file name "tagsIndex.plist" to the path
filePath = [[NSString alloc] initWithString:
[dir stringByAppendingPathComponent:@"tagsIndex.plist"]];
NSFileManager *fileManager = [NSFileManager defaultManager];
// if the file does not exist, create an empty NSMutableDictionary;
// otherwise, initialize an NSDictionary with the file's contents
if ([fileManager fileExistsAtPath:filePath] == NO)
{
tags = [[NSMutableDictionary alloc] init];
} // end if
else
{
tags = [[NSMutableDictionary alloc]
initWithContentsOfFile:filePath];
} // end else
buttons = [[NSMutableArray alloc] init]; // create array
infoButtons = [[NSMutableArray alloc] init]; // create array
}
return self; // if self == nil, object not initialized properly
} // end method init
这里我们有一个方法,将对象添加到buttons数组中,但它保持为空
- (void)addNewButtonWithTitle:(NSString *)title
{
// create a new button
UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
// give the button the title of the tag
[button setTitle:title forState:UIControlStateNormal];
// tell the button to call buttonTouched: when it is touched
[button addTarget:self action:@selector(buttonTouched:)
forControlEvents:UIControlEventTouchUpInside];
[buttons addObject:button]; // add the UIButton to the end of the array
//This Doesn't add it stays 0;
// sort the NSMutableArray by the UIButton's titles
[buttons sortUsingSelector:@selector(compareButtonTitles:)];
[self refreshList]; // refresh the list of favorite search Buttons
// Adjust the content size of the view to include the new button. The
// view scrolls only when the content size is greater than its frame.
CGSize contentSize = CGSizeMake(scrollView.frame.size.width,
buttons.count * (BUTTON_HEIGHT + BUTTON_SPACING) + BUTTON_SPACING);
[scrollView setContentSize:contentSize];
}
这是我释放按钮数组的dealoc
- (void)dealloc {
[buttons release];
[super dealloc];
}
我想不出哪里出了错
下面是应该添加新按钮的代码
- (IBAction)addTag:sender
{
// make the keyboard disappear
[ItemTitleField resignFirstResponder];
[QuantityField resignFirstResponder];
NSString *key = ItemTitleField.text; // get the text in tagField
NSString *value = QuantityField.text; // get the text in queryField
// test if either field is empty
if (value.length == 0 || key.length == 0)
return; // exit from the method
if ([tags valueForKey:key] == nil) // test if the tag already exists
[self addNewButtonWithTitle:key]; // if not, add a new button
[tags setValue:value forKey:key]; // add a new entry in tags
ItemTitleField.text = nil; // clear tagField of text
QuantityField.text = nil; // clear queryField of text
[tags writeToFile:filePath atomically:NO]; //save the data
} // end method addTag:
当您调用
[buttons addObject:button]时,是否确定:代码>,按钮
不是零吗?你怎么知道这不会添加按钮?在你的代码中,我看不到你在哪里将按钮添加到视图中。你能提供这个吗?我正在调试代码,它告诉我按钮有0个对象。将count
发送到nil
对象将返回0。您能否验证它不是nil
?使用此scrollview bringsubviewtofront并验证您是否已将子视图添加到scrollview尝试使用bringsubviewtofront时,它只是在尝试添加新标记时崩溃并退出应用程序。我在interface builder中手动向scrollView添加了一个圆角矩形。我一按下执行addTag操作的按钮,按钮就消失了。。这与委派有关吗?
- (void)addNewButtonWithTitle:(NSString *)title
{
// create a new button
// UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
UIButton *button = [[UIButton alloc] init];
or
UIButton *button = [[UIButton buttonWithType:UIButtonTypeRoundedRect] retain];
// give the button the title of the tag
[button setTitle:title forState:UIControlStateNormal];
// tell the button to call buttonTouched: when it is touched
[button addTarget:self action:@selector(buttonTouched:)
forControlEvents:UIControlEventTouchUpInside];
[buttons addObject:button]; // add the UIButton to the end of the array
//This Doesn't add it stays 0;
// sort the NSMutableArray by the UIButton's titles
[buttons sortUsingSelector:@selector(compareButtonTitles:)];
[self refreshList]; // refresh the list of favorite search Buttons
// Adjust the content size of the view to include the new button. The
// view scrolls only when the content size is greater than its frame.
CGSize contentSize = CGSizeMake(scrollView.frame.size.width,
buttons.count * (BUTTON_HEIGHT + BUTTON_SPACING) + BUTTON_SPACING);
[scrollView setContentSize:contentSize];
}