Post not yet marked as solved
Language: Objective C
Just like the title, I wanna implement the functionality that can keep user from clicking the exit button by mistake.
And it should show some words together like this:
"Do you want to close the program?"
Button "Yes", Button "No"
Is any method I can use? Thank in advance.
Where should I put this code?And how to make the actions of those buttons in alert window?
Post not yet marked as solved
The following is my code to show text in textview. But the error, EXC_BAD_INSTRUCTION, happens while executing it.
How does this error happen and how could I fix it?
dispatch_sync(dispatch_get_main_queue(), ^{
[[[Memo1 textStorage] mutableString]appendString:[NSString stringWithFormat:@"%@", str]];
[Memo1 scrollRangeToVisible:NSMakeRange(Memo1.string.length, 0)];//auto scroll down
});
Post not yet marked as solved
IDE: Xcode
I have the following code in my program sending this command in terminal. Program hangs up on this line and the debug area shows error "no module named pyvisa_py".
(power_max.py import the pyvisa module)
Then I try this command in terminal directly and the module pyvisa_py, installed already, can be found. The python file can be executed successfully.
How could I make Xcode identify the pyvisa_py module?
[cmd appendString:@“python3 /Users/shared/power_max.py”];
[cmd appendString:[Paremeter_IP stringValue]];
[cmd appendString:@" > /users/Shared/CMW.txt"];
system([cmd UTF8String]);
Post not yet marked as solved
I have a button that starts tests. The items, test no, min and max are added to the table_array and refresh table to show them.
Following code runs without error.
index++;
//if([[Elect objectAtIndex:index]isEqualToString:@"1"])
item++;
temp = [self GetDCVoltage_34970:1];
if(temp >= [[Min objectAtIndex:index]floatValue] && temp <= [[Max objectAtIndex:index]floatValue])
[table_status addObject:@"Pass"];
else
{
PF=false; [table_status addObject:@"Fail"];
err=101+item; [errcode setIntValue:err];
}
[table_no addObject:[NSString stringWithFormat:@"%d",item]];
[self Show_Datagrid:index];
[table_value addObject:[NSString stringWithFormat:@"%.3f",temp]];
[Test_value replaceObjectAtIndex:index withObject:[NSString stringWithFormat:@"%.3f",temp]];
[self refreshTable];
//if (continue_test.state==0 && PF==false)
//return;
return;
After I removed some lines, I only remain the lines that add objects to table_array. Then it shows up error: Thread1: EXE_BAD_INSTRUTION after I pressed button.
[table_no addObject:[NSString stringWithFormat:@"%d",item]];
[self Show_Datagrid:index];
[table_value addObject:[NSString stringWithFormat:@"%.3f",temp]];
[Test_value replaceObjectAtIndex:index withObject:[NSString stringWithFormat:@"%.3f",temp]];
[self refreshTable];
Post not yet marked as solved
I hope the table column show the values after I pressed the button. The following is the IBAction Button.
- (IBAction)buttonTapped:(id)sender
{
//Filling the arrays
Test_name = [NSArray arrayWithObjects:@"test_item_a",@"b",@"c",@"Current",nil];
Min = [NSArray arrayWithObjects:@"0.5",@"0.7",@"0.8",@"100",nil];
Max = [NSArray arrayWithObjects:@"5",@"5",@"9",@"140",nil];
uint16 index = 0;
NSInteger i = 0;
//Show_Datagrid this function move the above values to another 3 arrays table_item,
//table_min, table_max. And the following code is just to verify the value.
[self Show_Datagrid:index];
[self showMeg:@"Button Tapped!2\n"];
[self showMeg:[table_item objectAtIndex:0]];
[self showMeg:@"\n"];
[self showMeg:[table_min objectAtIndex:0]];
[self showMeg:@"\n"];
[self showMeg:Column_test_item.identifier];
//call this function to show the values in tableview.
[self tableView:_tableview objectValueForTableColumn:Column_test_item row:i];
}
following is the function (Column_test_item.identifier is verified correct.):
-(id)tableView:(NSTableView *)aTableView objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex
{
if ([aTableColumn.identifier isEqualToString:@"no"])
return [table_no objectAtIndex:rowIndex];
if ([aTableColumn.identifier isEqualToString:@"item"])
return [table_item objectAtIndex:rowIndex];
if ([aTableColumn.identifier isEqualToString:@"min"])
return [table_min objectAtIndex:rowIndex];
if ([aTableColumn.identifier isEqualToString:@"max"])
return [table_max objectAtIndex:rowIndex];
if ([aTableColumn.identifier isEqualToString:@"value"])
return [table_value objectAtIndex:rowIndex];
if ([aTableColumn.identifier isEqualToString:@"status"])
return [table_status objectAtIndex:rowIndex];
return [table_no objectAtIndex:rowIndex];
}
I thnik I called that function in wrong way. Shouldn't I input NSTableColumn parameter Column_test_item directly? Column_test_item is an IBOutlet I connected to the specfic test item column.
And how does this function know which column it want to fill up the value, based on the second parameter I input?
Post not yet marked as solved
What does the circle mean in front of the line (following image)?
How could I remove or create it?
Post not yet marked as solved
Show-message function got error: Thread 1:EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)
following is the function.
-(void)showMeg:(NSString *)str { dispatch_sync(dispatch_get_main_queue(), ^{ [[[Memo1 textStorage] mutableString]appendString:[NSString stringWithFormat:@"%@", str]]; [Memo1 scrollRangeToVisible:NSMakeRange(Memo1.string.length, 0)];//auto scroll down }); }
I called it in other .m file like the following.
-(void)showMeg:(NSString *)str { dispatch_sync(dispatch_get_main_queue(), ^{ [[[Memo1 textStorage] mutableString]appendString:[NSString stringWithFormat:@"%@", str]]; [Memo1 scrollRangeToVisible:NSMakeRange(Memo1.string.length, 0)];//auto scroll down }); }
xcode version: 13.3.1
Where can I find interface builder? I want to add a text column.